ホームページ >バックエンド開発 >PHPチュートリアル >PHP json_encode() 関数と中国語文字化け問題の詳細説明、_PHP チュートリアル
php(php>5.2)のjson_encode()組み込み関数を使用すると、phpのデータを他の言語にうまく転送できます。そして使用されました。
この関数の機能は、数値をjsonデータ保存形式に変換することです。
リーリープログラムの実行結果は次のとおりです:
{"名前":null,"年齢":}
json_encode 関数の中国語の文字は null としてエンコードされていることがわかりました。フロントエンドと緊密に統合するために、Json は utf エンコードのみをサポートしているためだと思います。 Javascript も utf- です。
リーリーこのプログラムを実行した結果は次のようになります:
{"タイトル":"u8fd9u91ccu662fu4e2du6587u6807u9898","本文":"abcd..."}
配列内のすべての中国語文字が欠落しているか、json_encode の後に u2353 などが表示されます。
解決策は、urlencode() 関数を使用して以下を処理することです。json_encode の前に、urlencode() を使用してすべての配列の内容を処理し、次に json_encode() を使用してそれらを JSON 文字列に変換し、最後に urldecode() を使用します。それらをエンコードするために中国語が転送されて戻されます。
リーリー今回は成功しました。結果は次のとおりです。
{"名前":"シア","年齢":"20"}
以下では、PHP json_encode の中国語コードが文字化けする場合の解決策を紹介します
Ajax を使用してバックグラウンドの PHP ページを操作するときに、中国語の文字化けの問題に遭遇したことがある人は多いと思います。 JSON は軽量のデータ交換形式として非常に人気がありますが、バックエンドの対話として PHP を使用すると、中国語の文字化けの問題が発生しやすくなります。 JSON は js と同じです。つまり、送信および受信のデータ形式として JSON を使用する場合、文字は UTF8 でエンコードされます。 UTF8を使用すると、非常に中国語の文字化けが発生しやすくなります。解決策は当然、js または PHP で JSON データを処理するときに UTF8 を使用することです。
PHP5.2 以降では、組み込み関数として json_encode が使用されており、Web サイト作成者にとって非常に便利です。ただし、json_encode は UTF8 でエンコードされた文字のみをサポートしていることに注意してください。そうしないと、中国語の文字化けや null 値が表示されます。 。
ステップ1
JSON を処理するときに文字が UTF8 でエンコードされていることを確認します。具体的には、データベース エンコーディングとページ エンコーディングの両方を UTF8 に変更できます。もちろん、gbk エンコードを使用したい場合は、JSON を処理する前に文字を UTF8 に変換できます。 PHPには以下のメソッドがあります:リーリー
ステップ2
バックグラウンドの PHP ページ (ページが UTF-8 としてエンコードされているか、文字が UTF-8 に変換されている) は、json_encode を使用して PHP の配列配列を JSON 文字列に変換します。例:リーリー
出力結果を表示します:{"名前":"u4e2du6587u5b57u7b26u4e32","値":"テスト"}
UTF8でエンコードされた文字を使用していても、json_encodeを使用すると中国語の文字化けが発生することがわかります。解決策は、json_encode を使用する前に関数 urlencode() で文字を処理し、次に json_encode を使用して、結果を出力するときに関数 urldecode() を使用して文字を変換することです。詳細は以下の通りです
リーリー
出力結果を表示します:{"名前":"中国語文字列","値":"テスト"}