php json_encode不同于js的输出JSON.stringify [复制]

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了php json_encode不同于js的输出JSON.stringify [复制]相关的知识,希望对你有一定的参考价值。

我得到了两个不同的结果

json_encode([ 'name' => 'xxx❤xxx' ]);

- > {"name":"xxxu2764xxx"}

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

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

为什么这样,我怎样才能确保js版本产生与php版本相同的结果?

答案

PHP中的转义是可选的,但在技术上并不需要有效的JSON(除了一些保留的空白字符外,它可以包含任意Unicode)。可以使用json_encode($data, JSON_UNESCAPED_UNICODE)关闭该功能。

不幸的是,JS版本根本没有这个功能。如果你想将多字节字符转义为u....,你应该明确地做;见JSON.stringify and unicode characters

以上是关于php json_encode不同于js的输出JSON.stringify [复制]的主要内容,如果未能解决你的问题,请参考以下文章

php [php:escape json_encode()] #php #js

php+jsJSON用法之将PHP数组转JS数组,JS如何接收PHP数组

php 二维数组传递给 js 问题解决记录

PHP json_encode($arr) 为啥会改变数组的顺序,怎么解决。在线等

php返回json,xml,JSONP等格式的数据

回显所有 json_encoded 行