一、问题分析

数据存储到数据库时,MySQL不会存储Unicode字符,json_encode中文的时候,会把每一个中文字符encode为"\uxxxx"的形式,但是当存储到数据库的时候,"\"字符会被过滤掉,真正存储到数据库的是"uxxxx"这一段。然后你从数据库读取数据的时候,只能读到"uxxxx"这个数据,这样的话,你就无法正确地解析中文了。

二、解决方法

比较简单的解决方法是将"\"字符转义为"\\",避免Unicode中文前"\"字符被MySQL当成特殊字符过滤掉,

$value = addslashes(json_encode("中文字符"));

还有一种方法是,php5.4之后给json新增了一个选项参数:JSON_UNESCAPED_UNICODE。json_encode时加上这个参数,就不会自动把中文转码了。

$value = json_encode("中文字符", JSON_UNESCAPED_UNICODE);

三、总结

以上为解决json_encode中文格式问题的方法,需要用到的可以参考一下。

发表新评论