PHP での UTF-8 文字列の処理: json_encode および JSON_UNESCAPED_UNICODE
多言語コンテンツを含む PHP スクリプトでは、json_encode 関数の動作によって疑問が生じることがあります。 Unicode 文字が 16 進エンティティになることがよくあります。
例:
入力: echo $text;
出力: "База данни грезка."
入力: json_encode($text);
出力: "u0411u0430u0437u0430 u0434u0430u043du 043du0438 u0433u0440u0435u0448u043au0430."
変換について
デフォルトでは、json_encode は Unicode 文字列を 16 進エンティティとしてエンコードします。これは、Unicode をサポートしていない古いシステムとの互換性を確保するための JSON の一般的な方法です。
解決策: JSON_UNESCAPED_UNICODE
PHP 5.4.0 で導入された、JSON_UNESCAPED_UNICODE フラグこの変換をバイパスできます。指定すると、json_encode に UTF-8 文字を直接出力するよう指示します。
使用法:
<code class="php">json_encode($text, JSON_UNESCAPED_UNICODE);</code>
このフラグを使用すると、出力は元の Unicode 文字エンコーディングを維持します。 :
<code class="php">\u0411\u0430\u0437\u0430 \u0434\u0430\u043d\u043d\u0438 \u0433\u0440\u0435\u0448\u043a\u0430.</code>
JSON_UNESCAPED_UNICODE フラグを使用すると、JSON 出力で元の Unicode 文字を保持できます。これは、多言語コンテンツを扱う場合、または真の Unicode サポートを必要とするシステムと統合する場合に特に役立ちます。
以上がPHP で json_encode を使用するときに、Unicode 文字が 16 進エンティティとしてエンコードされないようにするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。