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