Maison  >  Article  >  développement back-end  >  Comment convertir le format JSON avec des caractères chinois en tableau en PHP

Comment convertir le format JSON avec des caractères chinois en tableau en PHP

PHPz
PHPzoriginal
2023-04-20 09:08:13738parcourir

PHP est un langage de programmation côté serveur populaire utilisé pour créer des applications Web. JSON (JavaScript Object Notation) est un format d'échange de données léger. Il s’agit d’un format de texte facile à comprendre pour les humains et à traiter par les machines. PHP possède des fonctions intégrées pour traiter les données JSON et fournit des fonctions pour convertir le format JSON en tableaux PHP. Cependant, lorsque les données JSON contiennent des caractères chinois, des caractères tronqués apparaîtront. Dans cet article, nous présenterons comment convertir le format JSON avec des caractères chinois en un tableau PHP et résoudre le problème tronqué.

  1. Qu'est-ce que le format JSON

Le format JSON est un format d'échange de données léger basé sur la syntaxe du langage JavaScript mais qui peut également être utilisé avec d'autres langages de programmation. JSON se compose de paires clé-valeur, chaque paire clé-valeur est séparée par une virgule et deux points sont utilisés pour séparer la clé et la valeur. Les tableaux et les objets peuvent être utilisés en JSON. Voici un exemple de format JSON :

{
    "name": "张三",
    "age": 25,
    "gender": "男",
    "hobbies": ["游泳", "唱歌", "阅读"],
    "address": {
        "province": "广东",
        "city": "深圳"
    }
}
  1. JSON en tableau PHP

Nous pouvons utiliser la fonction json_decode de PHP pour convertir le format JSON en tableau PHP. Sa syntaxe est la suivante :

mixed json_decode ( string $json [, bool $assoc = FALSE [, int $depth = 512 [, int $options = 0 ]]] )

Parmi eux, le paramètre $json est une chaîne au format JSON, et $assoc est un paramètre optionnel Lorsque sa valeur est TRUE, un tableau associatif sera renvoyé, sinon un objet sera renvoyé. . $profondeur est un paramètre facultatif, spécifiant la profondeur de récursion maximale, qui est par défaut de 512. $options est également un paramètre facultatif, spécifiant les options de décodage JSON. La valeur par défaut est 0.

Ce qui suit est un exemple de conversion du format JSON en tableau PHP :

$json = '{"name": "张三", "age": 25, "gender": "男"}';
$arr = json_decode($json, true);
print_r($arr);

Le résultat de sortie est le suivant :

Array
(
    [name] => 张三
    [age] => 25
    [gender] => 男
)
  1. Traitement du format JSON avec des caractères chinois

Cependant, lorsque les données JSON contiennent des caractères chinois, des caractères tronqués apparaîtra. En effet, PHP encode JSON au format UTF-8 par défaut et les caractères chinois occupent 3 octets en UTF-8. Par conséquent, si nos données JSON contiennent des caractères chinois, elles doivent être traitées pendant le processus de conversion.

En PHP, nous pouvons utiliser la fonction iconv pour convertir différents jeux de caractères. La syntaxe de la fonction iconv est la suivante :

string iconv ( string $in_charset , string $out_charset , string $str )

Parmi eux, le paramètre $in_charset est le jeu de caractères source, le paramètre $out_charset est le jeu de caractères cible et le paramètre $str est la chaîne à convertir. Voici un exemple de conversion du format JSON en tableau PHP et de résolution du problème tronqué :

$json = '{"name": "张三", "age": 25, "gender": "男"}';
$json = iconv('UTF-8', 'GBK//IGNORE', $json); // 将JSON转换为GBK格式
$arr = json_decode($json, true);
$arr = array_map(function($value) {
    return iconv('GBK', 'UTF-8//IGNORE', $value); // 将数组转换为UTF-8格式
}, $arr);
print_r($arr);

Le résultat de sortie est le suivant :

Array
(
    [name] => 张三
    [age] => 25
    [gender] => 男
)

Dans l'exemple ci-dessus, nous utilisons d'abord la fonction iconv pour convertir la chaîne au format JSON de Format UTF-8 vers GBK. Ensuite, utilisez la fonction json_decode pour convertir le format JSON en tableau PHP. Enfin, nous utilisons la fonction array_map pour convertir chaque valeur du tableau du format GBK au format UTF-8.

En plus d'utiliser la fonction iconv, nous pouvons également utiliser la fonction mb_convert_encoding pour convertir les encodages de caractères. La fonction mb_convert_encoding est similaire à la fonction iconv, sauf que les paramètres sont légèrement différents. Voici un exemple de conversion d'encodage de caractères à l'aide de la fonction mb_convert_encoding :

$json = '{"name": "张三", "age": 25, "gender": "男"}';
$json = mb_convert_encoding($json, 'GBK', 'UTF-8'); // 将JSON转换为GBK格式
$arr = json_decode($json, true);
$arr = array_map(function($value) {
    return mb_convert_encoding($value, 'UTF-8', 'GBK'); // 将数组转换为UTF-8格式
}, $arr);
print_r($arr);

Le résultat est le même que l'exemple précédent.

  1. Résumé

En PHP, nous pouvons utiliser la fonction json_decode pour convertir le format JSON en un tableau PHP. Cependant, lorsque les données JSON contiennent des caractères chinois, des caractères tronqués apparaîtront. Pour résoudre ce problème, nous pouvons utiliser la fonction iconv ou la fonction mb_convert_encoding pour convertir le format JSON au jeu de caractères spécifié, puis le convertir en tableau PHP. De cette façon, nous pouvons gérer correctement le format JSON avec les caractères chinois.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn