是否可以使用UTF-8编码返回PHP json_encode
而不是Unicode? p>
$arr=array('a'=>'á');
echo json_encode($arr);
mb_internal_encoding('UTF-8');
和$arr=array_map('utf8_encode',$arr);
无法解决此问题。
结果:{"a":"\u00e1"}
预期结果:{"a":"á"}
答案 0 :(得分:75)
{"a":"\u00e1"}
和{"a":"á"}
是编写相同JSON文档的不同方法; JSON解码器将解码unicode转义。
在php 5.4+中,php的json_encode
确实具有JSON_UNESCAPED_UNICODE
选项用于普通输出。在较旧的php版本中,您可以推出自己的不编码非ASCII字符的JSON编码器,或使用Pear's JSON编码器并删除349到433行。
答案 1 :(得分:30)
此功能找到here,对我来说很好用
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));
}
答案 2 :(得分:27)
我解决了这个问题:
json_encode($array, JSON_UNESCAPED_UNICODE)
对数据进行编码; 结果是.json文件以ANSI编码为UTF-8。
答案 3 :(得分:7)
如果您的php版本> = 5.4,请在JSON_UNESCAPED_UNICODE
内使用json_encode()
。
答案 4 :(得分:-4)
只需使用它,
utf8_encode($string);
您已将$arr
替换为$string
。
我认为它会起作用...试试这个。