首頁  >  文章  >  後端開發  >  如何在 PHP 中以 UTF-8 編碼 JSON,而不轉義 Unicode 字元?

如何在 PHP 中以 UTF-8 編碼 JSON,而不轉義 Unicode 字元?

Linda Hamilton
Linda Hamilton原創
2024-10-31 03:42:30242瀏覽

How to Encode JSON in UTF-8 Without Escaping Unicode Characters in PHP?

如何在不轉義Unicode 字元的情況下以UTF-8 編碼JSON

在PHP 中, json_encode() 函數透過以下方式將值轉換為JSON 字串:但是,預設情況下,它將Unicode 字元轉義為其Unicode 代碼點表示形式。在某些輸出需要 UTF-8 編碼而不是 Unicode 編碼的情況下,這可能是不可取的。

考慮以下範例:

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

預期輸出為「a」:「á ",但實際結果是{"a":"u00e1"}。這是因為 json_encode() 函數已將字元 'á' 編碼為其 Unicode 碼位表示形式,即「u00e1」。

解決方案:

雖然有5.4 之前的PHP 版本中沒有內建選項來停用json_encode() 中的Unicode 轉義,有一些解決方法可以實現此目的:

  1. 捲動您自己的JSON 編碼器: 建立一個不編碼非ASCII 字元的自訂JSON 編碼器。
  2. 使用Pear 的JSON 編碼器: 使用Pear JSON 編碼器並刪除第349 到433 行,這些行負責Unicode 轉義.
  3. 利用PHP 5.4 : 在PHP 5.4 及更高版本中, json_encode() 函數提供了一個JSON_UNESCAPED_UNICODE 選項,允許純文字輸出而無需Unicode 轉義。以下是使用此選項的範例:
<code class="php"><?php
header('Content-Type: application/json');
$arr = ['a' => 'á'];
echo json_encode($arr, JSON_UNESCAPED_UNICODE);
?></code>

這將輸出所需的 JSON 字串: "a": "á"。

以上是如何在 PHP 中以 UTF-8 編碼 JSON,而不轉義 Unicode 字元?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn