ホームページ >バックエンド開発 >PHPチュートリアル >JSON エンコード後に特殊な Unicode 文字が歪んで表示されるのはなぜですか?

JSON エンコード後に特殊な Unicode 文字が歪んで表示されるのはなぜですか?

Barbara Streisand
Barbara Streisandオリジナル
2024-12-10 18:03:17870ブラウズ

Why Do Special Unicode Characters Appear Distorted After JSON Encoding?

JSON としてエンコードされた「特殊な」Unicode 文字の解釈

「特殊な」Unicode 文字を組み込むと、JSON にエンコードされた後に歪んで表示されることがよくあります:

echo json_encode(['foo' => '馬']);
// Output: {"foo":"\u99ac"}

これが起こる理由を理解するには、重要。

JSON エンコーディング標準

JSON エンコーディングは、ECMAScript (旧称 JavaScript) 文字列リテラル形成 (セクション 7.8.4) を利用します。これにより、文字を、接頭辞「u」の後にコード ポイントを表す 4 つの 16 進数が続く 16 進数として表すことができます。

"\u99ac"

この表現は、文字列リテラル「馬」と同一であり、同じ Unicode を伝えます。準拠した JSON パーサーによって解析されたときの文字。

PHP の JSON エンコーディングPreference

PHP の json_encode 関数は、多くの場合、「u....」エスケープ シーケンスを使用して非 ASCII 文字をエンコードします。これはオプションですが、有効な JSON が生成されます。

エンコーディングのカスタマイズ

必要に応じて、PHP 5.4 で導入された JSON_UNESCAPED_UNICODE フラグにより​​、リテラル文字エンコーディングが可能になります。

echo json_encode(['foo' => '馬'], JSON_UNESCAPED_UNICODE);
// Output: {"foo":"馬"}

このカスタマイズはむしろ好みであることに注意することが重要ですUnicode 文字を JSON で送信する必要はありません。

以上がJSON エンコード後に特殊な Unicode 文字が歪んで表示されるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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