php json_encode与js JSON.stringify的输出不同

时间:2019-02-25 12:45:08

标签: javascript php json

对于

,我得到两个不同的结果
json_encode([ 'name' => 'xxx❤xxx' ]);

-> {"name":"xxx\u2764xxx"}

JSON.stringify({ name: 'xxx❤xxx');

-> {"name":"xxx❤xxx"}

为什么会这样,如何确定js版本产生的结果与php版本相同?

1 个答案:

答案 0 :(得分:0)

PHP中的转义是可选的,但对于有效的JSON(除少数保留的空白字符之外,还可以包含任意Unicode)在技术上不是必需的。可以使用json_encode($data, JSON_UNESCAPED_UNICODE)关闭该功能。

不幸的是,JS版本根本没有该功能。如果要将多字节字符转义为\u....,则应明确地进行;参见JSON.stringify and unicode characters