为什么“特殊”Unicode 字符会出现用 u.... 编码的 JSON 序列
使用 PHP 编码“特殊”Unicode 字符时json_encode 函数中,它们通常显示为以“u”为前缀的不熟悉的字符串文字。此行为是 JSON 的字符编码机制所固有的,并不表示任何编码错误。
JSON 允许将字符表示为 u.... 转义序列,其中 .... 表示字符的 Unicode 代码点。这相当于 ECMAScript (JavaScript) 中字符串文字的形成方式。
例如,字符“马”在 JSON 中可以表示为“马”或“u99ac”。两个文字代表相同的字符并且同等有效。当由兼容的 JSON 解析器解析时,它们都会产生相同的字符串。
默认情况下,PHP 的 json_encode 支持 u.... 非 ASCII 字符的转义序列。但是,您可以通过在 PHP 5.4 或更高版本中指定 JSON_UNESCAPED_UNICODE 标志来覆盖此首选项。这将导致 JSON 输出带有文字字符而不是转义序列:
json_encode(['foo' => '馬'], JSON_UNESCAPED_UNICODE); // Output: {"foo":"馬"}
需要注意的是,指定 JSON_UNESCAPED_UNICODE 是个人偏好,而不是在 JSON 中传输 Unicode 字符的要求。转义序列和文字字符在 JSON 表示中同样有效。
以上是为什么某些 Unicode 字符在 JSON 中显示为'u....”序列?的详细内容。更多信息请关注PHP中文网其他相关文章!