Dans l'application réelle, lorsqu'il y a des caractères chinois, lors de l'utilisation directe de json_encode() fonction , les caractères chinois seront codés sous la forme de "u***" , depuis php5. Ce problème a été résolu dans 4 cas. Utilisez la méthode suivante pour résoudre le problème de l'encodage des caractères chinois json_encode("Chinese", JSON_UNESCAPED_UNICODE)
Par exemple : 'Xu' devient 'u80e5. ' après le traitement json_encode, et le json final La partie chinoise est remplacée par l'encodage Unicode. Ce que nous devons résoudre, c'est convertir l' objet en json et nous assurer que le chinois à l'intérieur de l'objet apparaît toujours comme du chinois normal en json. Il semble maintenant que seule l'utilisation de json_encode ne puisse pas atteindre l'objectif.
Ma solution : d'abord encoder en url le champ chinois de la classe (urlencode), puis encoder en json l'objet (jsonencode), et enfin décoder en url (urldecode) le json, qui est le json final, et le chinois l'intérieur est toujours le même. C'est le chinois !
Le code du test est le suivant :
<?php class myClass { public $item1 = 1; public $item2 = '中文'; function to_json() { //url编码,避免json_encode将中文转为unicode $this->item2 = urlencode($this->item2); $str_json = json_encode($this); //url解码,转完json后将各属性返回,确保对象属性不变 $this->item2 = urldecode($this->item2); return urldecode($str_json); } } $c = new myClass(); echo json_encode($c); echo '<br/>'; echo $c->to_json(); echo '<br/>'; echo json_encode($c); echo '<br/>'; echo json_encode('胥'); ?>
Résultat de sortie du programme :
{"item1":1,"item2":"\u4e2d\u6587"} {"item1":1,"item2":"中文"} {"item1":1,"item2":"\u4e2d\u6587"} "\u80e5"
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!