如何在 PHP 中使用 Unicode 字元對 JSON 進行編碼和解碼?

Barbara Streisand
發布: 2024-10-31 05:01:30
原創
901 人瀏覽過

How to Encode and Decode JSON with Unicode Characters in PHP?

在PHP 中使用Unicode 字符對JSON 進行編碼和解碼

在PHP 中,處理包含unicode 字符的JSON 字符串可能會帶來挑戰。本文解決了對此類字串進行解碼和編碼時常見的問題。

解碼 Unicode 字元

要使用 unicode 字元解碼 JSON,如果字元是未正確編碼。 JSON 規範允許使用雙引號、反斜線和控製字元之外的任何 unicode 字元。但是,某些 unicode 字元可能無法在 Python 或其他程式語言中正確解碼。

編碼 Unicode 字元

使用 unicode 字元對 JSON 進行編碼時,結果可能會使用以下格式進行編碼轉義的 unicode 序列,根據 JSON 規範有效。但是,您可能希望以未轉義的形式保留原始的 unicode 字元。

使用 unescaped_unicode 選項

PHP 5.4 為 json_encode() 引入了 JSON_UNESCAPED_UNICODE 選項,它提供了對 unicode 字元編碼而不轉義的能力。但是,如果您使用的是 PHP 5.3,則此選項不可用。

PHP 5.3 的替代解決方案

對於 PHP 5.3,您可以使用基於正規表示式的轉義編碼的 unicode 序列的方法。一種方法是:

<code class="php">$pattern = '/"\\u([0-9a-fA-F]{4})"/';
$replaced = preg_replace($pattern, '"\u"', $encodedJson);</code>
登入後複製

此正規表示式以「uXXXX」的形式搜尋轉義的 unicode 序列,並將其替換為未轉義的 unicode 字元。

範例程式碼

要使用 unicode 字元對 JSON 字串進行編碼並在解碼過程中轉義它們,可以使用以下程式碼:

<code class="php">$data = ['Tag' => 'Odómetro'];
$encodedJson = json_encode($data, JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES);
$decodedData = json_decode($encodedJson, true);

print_r($decodedData); // Output: [Tag] => Odómetro</code>
登入後複製

以上是如何在 PHP 中使用 Unicode 字元對 JSON 進行編碼和解碼?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!