Cet article décrit comment json_encode en php gère le problème chinois tronqué de gbk et gb2312. La méthode spécifique est la suivante :
1.json_encode() Le chinois renvoie null pour le chinois en gbk/gb2312
.$arr = array ( array ( 'catid' => '4', 'catname' => 'www.jb51.net', 'meta_title' => '脚本之家' ) ); echo json_encode($arr);
Résultat de l'exécution :
[{"catid":"4","catname":"www.jb51.net","meta_title":null}]
Regardez "meta_title" : null Il avait à l'origine une valeur de "Script Home". Nous avons vérifié et le principe est que json_encode ne prend en charge que l'encodage uft-8
<?php $data="JSON中文"; $newData=iconv("GB2312″,"UTF-8//IGNORE",$data); echo $newData; //ignore的意思是忽略转换时的错误,如果没有ignore参数,所有该字符后面的字符都不会被保存。 //或是("GB2312″,"UTF-8″,$data); ?>
<🎜. >
2. La page PHP d'arrière-plan (la page est codée en UTF-8 ou les caractères ont été convertis en UTF-8) utilise json_encode pour convertir le tableau en PHP en une chaîne JSON. Par exemple :<?php $testJSON=array('name'=>'中文字符串','value'=>'test'); echo json_encode($testJSON); ?>
{"name":"u4e2du6587u5b57u7b26u4e32″,"value":"test"}
<?php $testJSON=array('name'=>'中文字符串','value'=>'test'); //echo json_encode($testJSON); foreach ( $testJSON as $key => $value ) { $testJSON[$key] = urlencode ( $value ); } echo urldecode ( json_encode ( $testJSON ) ); ?>
{"name":"中文字符串","value":"test"}
Résumé : La fonction json_encode ne peut traiter que les chaînes uft8. Si elle est chinoise, elle ne gère probablement pas bien les octets, car les longueurs du chinois gbk et uft sont différentes. Cela ne sera pas présenté en profondeur. Pour plus d'articles connexes sur la façon dont json_encode en PHP gère les problèmes gbk et gb2312 chinois tronqués, veuillez prêter attention au site Web PHP chinois !