PHP 相当于 javascript JSON.stringify()

PHP equivalent of javascript JSON.stringify()

我注意到 PHP 的 json_encode($array) 在变音符号上搞砸了。 如果我更新我的数据库列 type text 和 javascript-created JSON 通过 HTTP 传递,一切看起来都很好。但是当我将 JSON 创建为 PHP 时,一些字符会被奇怪地编码。

我有这个数组;

$array = ['M-am întîlnit ieri cu','fosta mea profă de matematică'];

$text = implode(",",$array); // this looks good in db
$json = json_encode($array); // this don't and returns error when try to decode later.

首先,值得指出的是 PHP 并没有“搞砸”任何事情。它是转义字符,看起来可能很奇怪,但它是完全有效的,当你稍后 json_decode 它会和原来一样。看这里:https://3v4l.org/Smj2F

如果你不喜欢转义,你可以使用 JSON_UNESCAPED_UNICODE 标志:

https://www.php.net/function.json-encode

此标志将根据 https://www.php.net/manual/en/json.constants.php.

“逐字编码多字节 Unicode 字符”

所以你可以这样做:

json_encode($array, JSON_UNESCAPED_UNICODE);

它会给你以下输出:

["M-am întîlnit ieri cu","fosta mea profă de matematică"]

工作示例:https://3v4l.org/daETG