ホームページ > バックエンド開発 > PHPチュートリアル > PHP で json_encode を使用するときに、Unicode 文字が 16 進エンティティとしてエンコードされないようにするにはどうすればよいですか?

PHP で json_encode を使用するときに、Unicode 文字が 16 進エンティティとしてエンコードされないようにするにはどうすればよいですか?

Patricia Arquette
リリース: 2024-10-31 01:32:03
オリジナル
1002 人が閲覧しました

How can I prevent Unicode characters from being encoded as hexadecimal entities when using json_encode in PHP?

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

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