Unicode 文字をエスケープせずに JSON を UTF-8 でエンコードする方法
PHP では、 json_encode() 関数は次のように値を JSON 文字列に変換します。ただし、デフォルトでは、Unicode 文字を Unicode コード ポイント表現にエスケープします。これは、出力に Unicode エンコードではなく UTF-8 エンコードが必要な特定のシナリオでは望ましくない可能性があります。
次の例を考えてみましょう:
<code class="php">$arr = ['a' => 'á']; echo json_encode($arr);</code>
期待される出力は "a": "á " と表示されますが、実際の結果は {"a":"u00e1"} になります。これは、json_encode() 関数が文字「á」を Unicode コード ポイント表現 (「u00e1」) にエンコードしているためです。
解決策:
その間5.4 より前の PHP バージョンには、json_encode() で Unicode エスケープを無効にする組み込みオプションがありません。これを実現するには、次のような回避策があります。
<code class="php"><?php header('Content-Type: application/json'); $arr = ['a' => 'á']; echo json_encode($arr, JSON_UNESCAPED_UNICODE); ?></code>
これにより、目的の JSON 文字列が出力されます: "a": "á".
以上がPHP で Unicode 文字をエスケープせずに JSON を UTF-8 でエンコードするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。