Maison php教程 php手册 php中json_encode中文编码问题分析

php中json_encode中文编码问题分析

Jun 06, 2016 pm 08:38 PM
json_encode 中文编码

众所周知使用json_encode可以方便快捷地将对象进行json编码,但是如果对象的属性中存在着中文,问题也就随之而来了。json_encode会将中文转换为unicode编码

例如:'胥'经过json_encode处理后变为'\u80e5',最终的json中中文部分被替换为unicode编码。我们要解决的就是将对象转换为json并保证对象内部的中文在json中仍然是以正常的中文出现,现在看来只使用json_encode是不能达到目的的。
  我的解决方法:先将类中的中文字段进行url编码(urlencode),然后再对对象进行json编码(jsonencode),最后url解码(urldecode)json,即最终的json,里面的中文依旧是那个中文!
测试代码如下:
代码如下:
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 '
';
echo $c->to_json();
echo '
';
echo json_encode($c);
echo '
';
echo json_encode('胥');
?>

程序输出结果:
代码如下:
{"item1":1,"item2":"\u4e2d\u6587"}
{"item1":1,"item2":"中文"}
{"item1":1,"item2":"\u4e2d\u6587"}
"\u80e5"

希望本文起到抛砖引玉的作用,收集大家更好的解决方法……!
Déclaration de ce site Web
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

Article chaud

Combien de temps faut-il pour battre Split Fiction?
3 Il y a quelques semaines By DDD
Repo: Comment relancer ses coéquipiers
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: Comment obtenir des graines géantes
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Musée à deux points: toutes les expositions et où les trouver
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌

Article chaud

Combien de temps faut-il pour battre Split Fiction?
3 Il y a quelques semaines By DDD
Repo: Comment relancer ses coéquipiers
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: Comment obtenir des graines géantes
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Musée à deux points: toutes les expositions et où les trouver
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌

Tags d'article chaud

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Comment gérer les problèmes d'encodage chinois des chemins de fichiers dans le développement Java Comment gérer les problèmes d'encodage chinois des chemins de fichiers dans le développement Java Jun 29, 2023 pm 05:11 PM

Comment gérer les problèmes d'encodage chinois des chemins de fichiers dans le développement Java

Comment implémenter l'encodage et le décodage des caractères chinois dans la programmation en langage C ? Comment implémenter l'encodage et le décodage des caractères chinois dans la programmation en langage C ? Feb 19, 2024 pm 02:15 PM

Comment implémenter l'encodage et le décodage des caractères chinois dans la programmation en langage C ?

Causes courantes et solutions pour les caractères chinois tronqués en PHP Causes courantes et solutions pour les caractères chinois tronqués en PHP Mar 16, 2024 am 11:51 AM

Causes courantes et solutions pour les caractères chinois tronqués en PHP

Comment gérer correctement le codage des caractères chinois dans Tomcat Comment gérer correctement le codage des caractères chinois dans Tomcat Dec 28, 2023 pm 01:20 PM

Comment gérer correctement le codage des caractères chinois dans Tomcat

Résolvez le problème de l'encodage chinois des URL dans le développement Java et contrôlez-le en 30 mots Résolvez le problème de l'encodage chinois des URL dans le développement Java et contrôlez-le en 30 mots Jun 30, 2023 pm 01:25 PM

Résolvez le problème de l'encodage chinois des URL dans le développement Java et contrôlez-le en 30 mots

Partagez des conseils et des expériences sur la façon de gérer les caractères chinois tronqués dans matplotlib Partagez des conseils et des expériences sur la façon de gérer les caractères chinois tronqués dans matplotlib Jan 13, 2024 pm 02:14 PM

Partagez des conseils et des expériences sur la façon de gérer les caractères chinois tronqués dans matplotlib

Comment convertir un tableau au format JSON à l'aide de la fonction json_encode en PHP Comment convertir un tableau au format JSON à l'aide de la fonction json_encode en PHP Jun 26, 2023 pm 12:46 PM

Comment convertir un tableau au format JSON à l'aide de la fonction json_encode en PHP

Convertir les variables en chaîne au format JSON à l'aide de la fonction PHP 'json_encode' Convertir les variables en chaîne au format JSON à l'aide de la fonction PHP 'json_encode' Jul 24, 2023 am 10:42 AM

Convertir les variables en chaîne au format JSON à l'aide de la fonction PHP 'json_encode'

See all articles