為什麼「特殊」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中文網其他相關文章!