对于
,我得到两个不同的结果json_encode([ 'name' => 'xxx❤xxx' ]);
-> {"name":"xxx\u2764xxx"}
JSON.stringify({ name: 'xxx❤xxx');
-> {"name":"xxx❤xxx"}
为什么会这样,如何确定js版本产生的结果与php版本相同?
答案 0 :(得分:0)
PHP中的转义是可选的,但对于有效的JSON(除少数保留的空白字符之外,还可以包含任意Unicode)在技术上不是必需的。可以使用json_encode($data, JSON_UNESCAPED_UNICODE)
关闭该功能。
不幸的是,JS版本根本没有该功能。如果要将多字节字符转义为\u....
,则应明确地进行;参见JSON.stringify and unicode characters。