php json デコード文字化けの解決策: まず、JSON 処理の前に、文字を UTF8 形式に変換し、次にバックグラウンドの PHP ページで「json_encode」を使用して、PHP 内の配列配列を JSON 文字列に変換できます。
PHP json_encode 中国語文字化けの解決策
多くの人が Ajax を使用して、私が持っているバックグラウンドの PHP ページと対話すると思います。全員が漢字化けの問題に遭遇しました。 JSON は軽量なデータ交換形式として非常に人気がありますが、バックエンドの対話として PHP を使用すると、中国語の文字化けの問題が発生しやすくなります。
JSON は js と同じです。クライアントの文字は UTF8 の形式で処理されます。つまり、送信および受信のデータ形式として JSON を使用する場合、文字は UTF8 でエンコードされます。エンコードやデータベースのエンコードがUTF8を使用していない場合、中国語の文字化けが非常に発生しやすくなります。解決策は当然、js または PHP で JSON データを処理するときに UTF8 を使用することです。
PHP5.2 以降では、組み込み関数として json_encode が使用されており、Web サイト作成者にとって非常に便利ですが、json_encode は UTF8 エンコードのみをサポートしていることに注意する必要があります。中国語の文字化けやnull値が表示されます。
解決策は次の 2 つのステップに分かれています。
Step1
JSON を処理するときに文字が UTF8 でエンコードされていることを確認します。具体的には、データベース エンコーディングとページ エンコーディングの両方を UTF8 に変更できます。もちろん、gbk エンコーディングを使用したい場合は、JSON 処理の前に文字を UTF8 に変換できます。 PHP には次のメソッドがあります。
<?php $data="JSON中文"; $newData=iconv("GB2312","UTF-8//IGNORE",$data); echo $newData; //ignore的意思是忽略转换时的错误,如果没有ignore参数,所有该字符后面的字符都不会被保存。 //或是("GB2312","UTF-8",$data); ?>
Step2
バックグラウンド PHP ページ (ページ UTF-8 にエンコードされているか、文字が UTF-8 に変換されています) json_encode を使用して、PHP の配列配列を JSON 文字列に変換します。例:
<?php $testJSON=array('name'=>'中文字符串','value'=>'test'); echo json_encode($testJSON); ?>
出力結果を次のように表示します:
{“name”:”\u4e2d\u6587\u5b57\u7b26\u4e32″,”value”:”test”}
UTF8 でエンコードされた文字が使用されていても、json_encode を使用すると中国語の文字化けが発生することがわかります。解決策は、json_encode を使用する前に関数 urlencode() で文字を処理し、次に json_encode を使用して、結果を出力するときに関数 urldecode() を使用して文字を変換することです。詳細は次のとおりです。
<?php $testJSON=array('name'=>'中文字符串','value'=>'test'); //echo json_encode($testJSON); foreach ( $testJSON as $key => $value ) { $testJSON[$key] = urlencode ( $value ); } echo urldecode ( json_encode ( $testJSON ) ); ?>
出力結果を次のように確認します。
{“name”:”中文字符串”,”value”:”test”}
この時点で、漢字は正常に出力されています。 json_encode を自由に使用してください。このようにすると、フロントエンド JavaScript で Ajax が eval を受信したときに、PHP バックグラウンドで出力される JSON 文字列が中国語で文字化けすることはありません。これは、js も JSON 形式のデータを PHP と同様の UTF8 形式で処理するためです。 PHP ページを受信します。JSON 文字列は問題を引き起こしません。
推奨: 「PHP チュートリアル 」
以上がPHPのJSONデコードで中国語が文字化けした場合の対処法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。