我在php中有以下数组
$array = array(
array('name'=>'abc', 'text'=>'اسلسصثصض صثصهخه عه☆anton & budi☆' ),
array('name'=>'xyz', 'text'=>'nice' ),
);
当我使用json_encode时,结果是不同的:
[
{
"name": "abc",
"text": "\u0627\u0633\u0644\u0633\u0635\u062b\u0635\u0636 \u0635\u062b\u0635\u0647\u062e\u0647 \u0639\u0647\u2606anton '<&>' budi\u2606"
},
{
"name": "xyz",
"text": "nice"
}
]
为什么结果不是这样的?
[
{
"name": "abc",
"text": "اسلسصثصض صثصهخه عه☆anton & budi☆"
},
{
"name": "xyz",
"text": "nice"
}
]
由于
答案 0 :(得分:1)
因为PHP在编码时不假设/允许非ASCII字符集。两种结果在解码时都是等效的。
答案 1 :(得分:1)
因为它被编码为JSON。使用您的第一个输出,您绝对100%确定浏览器将收到您想要的内容。第二个,你不能确定。
答案 2 :(得分:0)
试试这个:
//for encode json_encode(array_map('base64_encode', $array)); //and for decode array_map('base64_decode', json_decode($array));
希望有所帮助