任何方法返回PHP json_encode
编码UTF-8,而不是Unicode?
$arr=array('a'=>'á');
echo json_encode($arr);
mb_internal_encoding('UTF-8');
和$arr=array_map('utf8_encode',$arr);
不能修复它
结果:{"a":"'u00e1"}
预期结果:{"a":"á"}
{"a":"'u00e1"}
和{"a":"á"}
是编写相同JSON文档的不同方式;JSON解码器将解码unicode转义。
在php 5.4+中,php的json_encode
确实具有用于纯输出的JSON_UNESCAPED_UNICODE
选项。在旧的php版本中,您可以推出自己的不编码非ascii字符的JSON编码器,或者使用Pear的JSON编码器并删除第349至433行。
我这样解决了我的问题:
- .php文件被编码为ANSI。在这个文件中是创建。json文件的函数。
- 我使用
json_encode($array, JSON_UNESCAPED_UNICODE)
来编码数据;
结果是一个。json文件编码为ANSI作为UTF-8。
这个函数在这里找到,对我来说很好
function jsonRemoveUnicodeSequences($struct) {
return preg_replace("/''''u([a-f0-9]{4})/e", "iconv('UCS-4LE','UTF-8',pack('V', hexdec('U$1')))", json_encode($struct));
}
如果您的php版本>=5.4,则在json_encode()
中使用JSON_UNESCAPED_UNICODE
就用这个,
utf8_encode($string);
你必须把你的$arr
换成$string
。
我认为它会起作用的。试试这个。