ホームページ > バックエンド開発 > PHPチュートリアル > 一部の Unicode 文字が JSON で「\u....」シーケンスとして表示されるのはなぜですか?

一部の Unicode 文字が JSON で「\u....」シーケンスとして表示されるのはなぜですか?

Patricia Arquette
リリース: 2024-12-19 19:30:11
オリジナル
953 人が閲覧しました

Why Do Some Unicode Characters Appear as `u....` Sequences in JSON?

「特殊な」Unicode 文字が u.... でエンコードされて表示される理由 JSON のシーケンス

「特殊な」Unicode 文字を PHP でエンコードする場合json_encode 関数では、多くの場合、接頭辞「u」が付いた見慣れない文字列リテラルとして表示されます。この動作は JSON の文字エンコード メカニズムに固有のものであり、エンコード エラーを示すものではありません。

JSON では文字を u.... エスケープ シーケンスとして表すことができます。ここで .... は文字の Unicode コード ポイントを示します。これは、ECMAScript (JavaScript) の文字列リテラルの形成方法と同じです。

たとえば、文字「馬」は、JSON では「馬」または「u99ac」のいずれかとして表すことができます。どちらのリテラルも同じ文字を表し、同様に有効です。準拠した JSON パーサーで解析すると、両方とも同じ文字列が得られます。

デフォルトでは、PHP の json_encode は非 ASCII 文字の u.... エスケープ シーケンスを優先します。ただし、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 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート