ホームページ  >  記事  >  バックエンド開発  >  PHP で Unicode 文字を使用して JSON をエンコードおよびデコードするにはどうすればよいですか?

PHP で Unicode 文字を使用して JSON をエンコードおよびデコードするにはどうすればよいですか?

Barbara Streisand
Barbara Streisandオリジナル
2024-10-31 05:01:30902ブラウズ

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 文字のエンコード

JSON を Unicode 文字でエンコードすると、結果が次のようにエンコードされる場合があります。エスケープされた Unicode シーケンス。これは JSON 仕様に従って有効です。ただし、元の Unicode 文字をエスケープされていない形式で保持したい場合があります。

unescaped_unicode オプションの使用

PHP 5.4 では、json_encode() に JSON_UNESCAPED_UNICODE オプションが導入されました。 Unicode 文字をエスケープせずにエンコードする機能。ただし、PHP 5.3 を使用している場合、このオプションは使用できません。

PHP 5.3 の代替ソリューション

PHP 5.3 の場合は、正規表現ベースのエンコードされた Unicode シーケンスをエスケープ解除するア​​プローチ。これを行う 1 つの方法は次のとおりです。

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

この正規表現は、「uXXXX」の形式でエスケープされた Unicode シーケンスを検索し、エスケープされていない Unicode 文字に置き換えます。

例コード

JSON 文字列を Unicode 文字でエンコードし、デコード中にエスケープ解除するには、次のコードを使用できます:

<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 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。