一、问题分析
数据存储到数据库时,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中文格式问题的方法,需要用到的可以参考一下。