Position actuelle: Accueil> Derniers articles> Comment faire face aux problèmes d'encodage en combinaison avec JSON_ENCODE et MySQLI :: Get_Charset?

Comment faire face aux problèmes d'encodage en combinaison avec JSON_ENCODE et MySQLI :: Get_Charset?

M66 2025-06-06

Dans le développement de PHP, les caractères chinois brouillé sont un problème courant lors de la gestion de la base de données et de la transmission des données frontales. Surtout lorsque vous utilisez MySqli :: Get_Charset et JSON_ENCODE , si le jeu de caractères n'est pas configuré correctement, cela peut conduire à un contenu chinois brouillé. Cet article expliquera comment résoudre ce problème et s'assurera que les caractères chinois peuvent être passés correctement lors de l'interaction avec une base de données MySQL.

1. Sélection et configuration des jeux de caractères

Tout d'abord, assurez-vous que le jeu de caractères est correctement défini sur UTF-8 lorsque la connexion de la base de données est connectée afin que MySQL puisse gérer correctement les caractères chinois. Nous utilisons l'extension MySQLI pour nous connecter à la base de données, puis utilisons MySQLI :: Get_Charset pour obtenir les paramètres actuels du jeu de caractères. S'assurer que le jeu de caractères est UTF-8 est une étape clé pour résoudre le problème brouillé.

Exemple de code:

 <?php
// Connectez-vous à la base de données
$mysqli = new mysqli('localhost', 'root', '', 'test_db');

// Vérifiez si la connexion réussit
if ($mysqli->connect_error) {
    die('Échec de la connexion: ' . $mysqli->connect_error);
}

// Définissez le jeu de caractères sur UTF-8
$mysqli->set_charset('utf8');

// Obtenez le jeu de caractères actuel
$current_charset = $mysqli->get_charset();
echo "Jeu de caractères actuel: " . $current_charset->charset;

// Effectuer une requête de base de données et sortir des données chinoises
$query = "SELECT name FROM users WHERE id = 1";
$result = $mysqli->query($query);
$row = $result->fetch_assoc();

// Résultats de la requête de sortie
echo json_encode($row);
?>

2. Évitez le code brouillé lorsque vous utilisez json_encode

Lorsque nous interrogeons les données chinoises de la base de données et la codons via JSON_ENCODE , si le jeu de caractères n'est pas réglé correctement, les caractères chinois peuvent être brouillés. Pour éviter cela, nous pouvons utiliser le paramètre JSON_UNESCAPED_UNICODE pour nous assurer que les caractères chinois ne sont pas échappés.

Exemple de code amélioré:

 <?php
// Connectez-vous à la base de données
$mysqli = new mysqli('localhost', 'root', '', 'test_db');

// Vérifiez si la connexion réussit
if ($mysqli->connect_error) {
    die('Échec de la connexion: ' . $mysqli->connect_error);
}

// Définissez le jeu de caractères sur UTF-8
$mysqli->set_charset('utf8');

// Obtenez le jeu de caractères actuel
$current_charset = $mysqli->get_charset();
echo "Jeu de caractères actuel: " . $current_charset->charset;

// Effectuer une requête de base de données et sortir des données chinoises
$query = "SELECT name FROM users WHERE id = 1";
$result = $mysqli->query($query);
$row = $result->fetch_assoc();

// utiliser json_encode Sortie chinois,Assurez-vous que les caractères chinois ne sont pas échappés
echo json_encode($row, JSON_UNESCAPED_UNICODE);
?>

3. Configurations de jeu de caractères communs

Si le jeu de caractères de la table de base de données que vous utilisez n'est pas UTF-8, vous pouvez rencontrer des problèmes de conversion de caractères. Pour s'assurer qu'il n'y a pas de code brouillé rencontré dans l'environnement de développement, il est recommandé de vérifier les éléments suivants:

  • Ensemble de caractères de la base de données: utilisez UTF8MB4 ou UTF8 .

  • Ensemble de caractères des tables de données: les requêtes SQL suivantes peuvent être utilisées pour afficher et modifier le jeu de caractères d'une table:

     SHOW CREATE TABLE users;
    ALTER TABLE users CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
    
  • Set de caractères connectés: en php, définissez le jeu de caractères par mysqli-> set_charset ('utf8') .

4. Autres façons de résoudre le code brouillé chinois

En plus de la configuration ci-dessus, il est également essentiel pour s'assurer que le navigateur peut également décoder correctement les données chinoises. Une pratique courante consiste à ajouter la balise Meta suivante à la balise <adread> d'une page Web:

 <meta charset="UTF-8">

Cela garantit que le navigateur analyse correctement les caractères chinois et évite le code brouillé.

Résumer

Lorsque vous utilisez MySqli :: Get_Charset avec JSON_ENCODE pour le traitement des caractères chinois, la configuration correcte du jeu de caractères est la clé pour éviter les problèmes de code brouillé. Assurez-vous que le jeu de caractères de connexion de la base de données est défini sur UTF8 ou UTF8MB4 et ajoutez le paramètre JSON_UNESCAPED_UNICODE lors de l'utilisation de JSON_ENCODOD , ce qui peut éviter efficacement le problème du chinois brouillé.

Grâce à l'introduction de cet article, cela devrait vous aider à éviter les problèmes causés par le code brouillé chinois lors de l'utilisation de Mysqli et JSON_encode .