首页 >后端开发 >php教程 >如何使用 PHP 的 `json_encode` 使用 UTF-8 对 JSON 中的非 ASCII 字符进行编码?

如何使用 PHP 的 `json_encode` 使用 UTF-8 对 JSON 中的非 ASCII 字符进行编码?

Linda Hamilton
Linda Hamilton原创
2024-10-27 00:15:02260浏览

How to Encode Non-ASCII Characters in JSON with UTF-8 Using PHP's `json_encode`?

如何以 UTF-8 编码而不是 Unicode 返回 PHP json_encode

使用 PHP 的 json_encode 函数时,默认为非 ASCII 字符以 Unicode 格式编码。这会导致 JSON 响应包含“u00e1”等转义序列,而不是“á”等 UTF-8 编码字符。

举个例子:

<code class="php">$arr = array('a' => 'á');
echo json_encode($arr);</code>

输出将是:

<code class="json">{"a":"\u00e1"}</code>

要解决此问题并返回包含 UTF-8 编码字符的 JSON 响应,您可以使用以下方法:

PHP 5.4 :

从 PHP 5.4 开始,json_encode 提供了 JSON_UNESCAPED_UNICODE 选项。通过设置此选项,非 ASCII 字符将采用纯 UTF-8 编码,不带转义序列。

<code class="php">echo json_encode($arr, JSON_UNESCAPED_UNICODE);</code>

较旧的 PHP 版本:

对于 PHP 之前的版本5.4,您可以实现自己的 JSON 编码器,省略对非 ASCII 字符的编码。或者,您可以利用 Pear 的 JSON 编码器并从编码函数中删除第 349 至 433 行。

请注意 {"a":"u00e1"} 和 {"a":"á"} 之间的区别纯粹是用 JSON 语法编写的。两种表示形式都将被 JSON 解码器解码为相同的 Unicode 值。

以上是如何使用 PHP 的 `json_encode` 使用 UTF-8 对 JSON 中的非 ASCII 字符进行编码?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn