如何以 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中文网其他相关文章!