php json_encode の文字化けの解決策: 最初にデータベース エンコーディングとページ エンコーディングを UTF8 に変更し、次に「json_encode」を使用して PHP の配列配列を JSON 文字列に変換し、最後に関数 urlencode を使用して処理します。
PHP json_encode 中国語文字化けの解決策
多くの人が Ajax を使用して、私が持っているバックグラウンドの PHP ページと対話していると思います。全員が漢字化けの問題に遭遇しました。 JSON は軽量なデータ交換形式として非常に人気がありますが、バックグラウンドの対話として PHP を使用すると、中国語の文字化けの問題が発生しやすくなります。 JSON は js と同じです。クライアント上の文字は UTF8 の形式で処理されます。つまり、送信および受信のデータ形式として JSON を使用する場合、文字は UTF8 でエンコードされます。ページのエンコードとデータベースの際には、文字が 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 の配列 array は 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 中国語 Web サイト をご覧ください。
以上がphp json_encodeが文字化けする問題の解決方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。