php json 中国語変換方法: 1. 中国語フィールドを Urlencode します; 2. json_encode 関数を使用してエンコードします; 3. urldecode を使用して結果を処理します。
この記事の動作環境: Windows7 システム、PHP7.1 バージョン、Dell G3 コンピューター
方法phpのjsonを中国語に変換しますか? PHP は通常、中国語の JSON 形式文字列をどのように変換しますか?
JSON 形式文字列を変換する方法については、PHP マニュアルに 2 つの関数が記載されています:
json_encode: 変数の JSON エンコーディング
json_decode: 文字列を JSON 形式でエンコードします
例を見てみましょう:
$arr = ['a', 'b', 'c'];echo json_encode($arr);
出力は次のとおりです:
["a","b","c"]
ただし、中国語の文字が入力されると、
$arr = [ '世界', '你好',];echo json_encode($arr);
出力結果は次のとおりです:
["\u4e16\u754c","\u4f60\u597d"]
この結果は明らかに私たちが望んでいたものではありませんが、なぜこのようなことが起こるのでしょうか?値に中国語が含まれている場合、PHP がその値に対して json エンコードを実行すると、最下層で中国語に対して Unicode エンコードが実行され、結果が判読できなくなるためです。
方法 1
urlencode メソッドと urldecode メソッドを使用すると、unicode へのトランスコード プロセスをバイパスできます。最初に中国語フィールドを urlencode し、次に json_encode を実行し、最後に urldecode を使用して結果を処理します。正常に動作します 中国語を表示します。具体的なコードは次のとおりです:
$arr = [ '世界', '你好',];echo urldecode(json_encode(array_map('urlencode', $arr)));
出力結果は次のとおりです:
["世界","你好"]
メソッド 2
PHP5.4 バージョン以降、公式は Json に新しいオプションを追加しました。 JSON_UNESCAPED_UNICODE。このオプションを追加すると、中国語は自動的にエンコードされなくなります。具体的なコードは次のとおりです:
$arr = [ '世界', '你好',];echo json_encode($arr, JSON_UNESCAPED_UNICODE);
出力は次のとおりです:
["世界","你好"]
ほら、これが私たちが望む結果です:)
Note
には、注意 残念ながら、json_encode と json_decode は UTF-8 でエンコードされた文字のみをサポートするため、json 関数を使用する場合は gbk 文字を変換する必要があります。
推奨学習: 「
PHP ビデオ チュートリアル以上がPHPのJSONを中国語に変換する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。