hi,欢迎访问本站!
当前位置: 首页编程开发正文

PHP json_encode中文乱码怎么解决

墨初 编程开发 1312阅读

在php脚本中,在使用 json_encode() 函数将含有中文字符串的数组转换成 json 格式的字符串时,其数组内的中文会被转义出现一些乱码,如果出现这种情,不要着急,因为这并不是 json_encode() 函数的BUG,也不是你代码有问题,而需要我们对 json_encode() 函数运行时进行一些设置,就可以保持中文字符串以正常的状态进行转换了!

json_encode中文乱码的解决方法

json_encode() 原始输出:

可以参考下面的代码,数组中的“墨初”两个字在通过 json_encode() 函数转成 json 格式的字符串后,被转成了“\u58a8\u521d”!

$arr = array('墨初','73so.com');
echo json_encode($arr);
// ["\u58a8\u521d","73so.com"]

方法1:

在json_encode() 函数添加第二个参数,参数值为 JSON_UNESCAPED_UNICODE

注:此方法适合网站服务器 php 版本大于 5.4 的网站,如果低于这个版本,就不要考虑了。

$arr = array('墨初','73so.com');
echo json_encode($arr,JSON_UNESCAPED_UNICODE);
// ["墨初","73so.com"]

方法2:

利用 urlencode 与 urldecode 函数来保持 json_encode 函数转换后的数据保持中文状态。

//73so.com
$arr = array('墨初','73so.com');
foreach( $arr as $key => $v ) {
    $arr[$key] = urlencode ($v);
}
echo urldecode(json_encode($arr));
// ["墨初","73so.com"]

PS:

1、如果你服务器的PHP版本低于5.5,请不要使用方法1,不然 json_encode() 函数会抛出错误

2、方法2在低版本的php中也可以使用,但更推荐您升级php版本来使用方法1

标签:
声明:无特别说明,转载请标明本文来源!
发布评论
正文 取消