ホームページ > バックエンド開発 > PHPチュートリアル > PHP の「json_encode」を使用して JSON 内の非 ASCII 文字を UTF-8 でエンコードするにはどうすればよいですか?

PHP の「json_encode」を使用して JSON 内の非 ASCII 文字を UTF-8 でエンコードするにはどうすればよいですか?

Linda Hamilton
リリース: 2024-10-27 00:15:02
オリジナル
257 人が閲覧しました

How to Encode Non-ASCII Characters in JSON with UTF-8 Using PHP's `json_encode`?

Unicode の代わりに UTF-8 エンコーディングで PHP json_encode を返す方法

PHP の json_encode 関数を使用する場合、デフォルトでは非 ASCII 文字が返されますUnicode 形式でエンコードされます。これにより、「á」などの UTF-8 エンコード文字ではなく、「u00e1」などのエスケープ シーケンスを含む JSON 応答が生成されます。

次の例を考えてみましょう。

<code class="php">$arr = array('a' => 'á');
echo json_encode($arr);</code>
ログイン後にコピー

出力は次のようになります。

<code class="json">{"a":"\u00e1"}</code>
ログイン後にコピー

この問題を解決し、UTF-8 でエンコードされた文字を含む JSON 応答を返すには、次の方法を利用できます:

PHP 5.4 :

PHP 5.4 以降、json_encode は JSON_UNESCAPED_UNICODE オプションを提供します。このオプションを設定すると、非 ASCII 文字はエスケープ シーケンスなしでプレーン UTF-8 エンコードされます。

<code class="php">echo json_encode($arr, JSON_UNESCAPED_UNICODE);</code>
ログイン後にコピー

古い PHP バージョン:

PHP より前のバージョンの場合5.4 では、非 ASCII 文字のエンコードを省略する独自の JSON エンコーダを実装できます。あるいは、Pear の JSON エンコーダを利用して、エンコード関数から 349 行目から 433 行目を削除することもできます。

{"a":"u00e1"} と {"a":"á"} の違いに注意してください。純粋に、JSON 構文での記述方法です。どちらの表現も、JSON デコーダーによって同じ Unicode 値にデコードされます。

以上がPHP の「json_encode」を使用して JSON 内の非 ASCII 文字を UTF-8 でエンコードするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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