JSONは、軽量のデータ交換形式であるJavaScriptオブジェクト表記(JavaScriptオブジェクト表記)の略語です。 PHPでは、開発者は組み込み関数json_encode()を使用して、フロントエンドとバックエンド間または異なるシステム間のデータ相互作用のために、配列またはオブジェクトをJSON形式に変換できます。 PHP 5.2.0バージョン以来、 json_encode()はWeb開発で広く使用されています。
json_encode()が中国語を含む配列またはオブジェクトを処理する場合、デフォルトの動作は漢字をユニコードエンコードに変換します。例えば:
$arr = array('name' => 'チャン・サン', 'age' => 18, 'gender' => '男');
echo json_encode($arr);
// 出力結果:{"name":"\u5f20\u4e09","age":18,"gender":"\u7537"}
中国語がユニコードエンコードに逃げられていることがわかります。
PHP 5.4.0から、 json_encode()関数はjson_unescaped_unicodeオプションをサポートします。このオプションを使用して、中国語が逃げないようにし、漢字をそのまま出力します。
$arr = array('name' => 'チャン・サン', 'age' => 18, 'gender' => '男');
echo json_encode($arr, JSON_UNESCAPED_UNICODE);
// 出力結果:{"name":"チャン・サン","age":18,"gender":"男"}
この方法は最も簡単で推奨される方法ですが、サーバーのPHPバージョンが5.4以降であることを確認する必要があります。
PHP 5.4以下のバージョンの場合、 urlencode()およびurldecode()メソッドを介して漢字を手動でエスケープしてデコードすることができます。
$arr = array('name' => 'チャン・サン', 'age' => 18, 'gender' => '男');
$new_arr = array();
foreach($arr as $key => $value) {
$new_arr[$key] = urlencode($value);
}
echo urldecode(json_encode($new_arr));
// 出力結果:{"name":"チャン・サン","age":18,"gender":"男"}
この方法は、PHPの古いバージョンと互換性があります。少し面倒ですが、中国人が逃げるという問題を効果的に回避できます。
中国のディスプレイをよりよくサポートするために、開発者は現在のPHPバージョンに基づいて適切なソリューションを選択できます。バージョンがサポートする場合、 json_unescaped_unicodeを使用することが推奨されます。そうでない場合は、手動の脱出とデコードを通じて同じ効果を達成できます。中国のコーディングの問題を正しく処理すると、フロントエンドとバックエンドのインタラクションのユーザーエクスペリエンスとデータの読みやすさが向上します。