Position actuelle: Accueil> Derniers articles> Comment résoudre le problème du codage chinois JSON en PHP

Comment résoudre le problème du codage chinois JSON en PHP

gitbox 2025-07-26

Qu'est-ce que JSON Encoding en PHP

JSON est l'abréviation de la notation d'objet JavaScript (notation d'objet JavaScript), un format d'échange de données léger. Dans PHP, les développeurs peuvent utiliser la fonction intégrée json_encode () pour convertir des tableaux ou des objets en format JSON pour l'interaction des données entre les extrémités avant et arrière ou entre différents systèmes. Depuis la version PHP 5.2.0, json_encode () a été largement utilisé dans le développement Web.

Le problème du code brouillé causé par le codage chinois JSON en PHP

Lorsque la fonction json_encode () traite un tableau ou un objet contenant chinois, le comportement par défaut convertit les caractères chinois en codage Unicode. Par exemple:

 
$arr = array('name' => 'Zhang San', 'age' => 18, 'gender' => 'mâle');
echo json_encode($arr);
// Résultat de sortie:{"name":"\u5f20\u4e09","age":18,"gender":"\u7537"}

Vous pouvez voir que le chinois est échappé dans un codage Unicode, ce qui, dans certains cas, provoquera un affichage de code brouillé ou une lecture gênante.

Solution 1: Utilisez le paramètre JSON_UNESCAPED_UNICODE

À partir de PHP 5.4.0, la fonction JSON_ENCODE () prend en charge l'option JSON_UNESCAPED_UNICODE . Utilisez cette option pour empêcher le chinois d'être échappé, gardant ainsi la production de caractères chinois tel quel.

 
$arr = array('name' => 'Zhang San', 'age' => 18, 'gender' => 'mâle');
echo json_encode($arr, JSON_UNESCAPED_UNICODE);
// Résultat de sortie:{"name":"Zhang San","age":18,"gender":"mâle"}

Cette méthode est la manière la plus simple et recommandée, mais il est nécessaire de s'assurer que la version PHP du serveur est de 5,4 et plus.

Solution 2: Échappement manuel et décoder les caractères chinois

Pour les versions ci-dessous PHP 5.4, vous pouvez échapper manuellement et décoder les caractères chinois via les méthodes UrLencode () et UrlDecode () pour éviter le code brouillé:

 
$arr = array('name' => 'Zhang San', 'age' => 18, 'gender' => 'mâle');
$new_arr = array();
foreach($arr as $key => $value) {
    $new_arr[$key] = urlencode($value);
}
echo urldecode(json_encode($new_arr));
// Résultat de sortie:{"name":"Zhang San","age":18,"gender":"mâle"}

Cette méthode est compatible avec les anciennes versions de PHP. Bien qu'il soit un peu lourd, il peut effectivement éviter que le problème des Chinois ne se fasse échapper.

Résumer

Pour mieux prendre en charge l'affichage chinois, les développeurs peuvent choisir la solution appropriée en fonction de la version PHP actuelle. Si la version le prend en charge, l'utilisation de JSON_UNESCAPED_UNICODE est préférée; Sinon, le même effet peut être réalisé grâce à l'échappement manuel et à décoder. La gestion correcte des problèmes de codage chinois peut améliorer l'expérience utilisateur et la lisibilité des données des interactions frontales et back-end.