ホームページ > バックエンド開発 > PHPチュートリアル > PHP json_encode() 関数と中国語文字化け問題の詳細説明、_PHP チュートリアル

PHP json_encode() 関数と中国語文字化け問題の詳細説明、_PHP チュートリアル

WBOY
リリース: 2016-07-12 09:05:24
オリジナル
950 人が閲覧しました

PHPのjson_encode()関数と中国語文字化け問題の詳細説明

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 値が表示されます。 。


解決策は次の 2 つのステップに分かれています。

ステップ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() を使用して文字を変換することです。詳細は以下の通りです

リーリー

出力結果を表示します:

{"名前":"中国語文字列","値":"テスト"}


この時点で、漢字は正常に出力されました。 json_encode を自由に使用してください。このようにすると、フロントエンド JavaScript で Ajax が eval を受信したときに、PHP バックグラウンドで出力される JSON 文字列が中国語で文字化けすることはありません。これは、js も JSON 形式のデータを PHP と同様の UTF8 形式で処理するためです。 PHP ページを受信します。JSON 文字列は問題を引き起こしません。

http://www.bkjia.com/PHPjc/1068832.htmlwww.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/1068832.html技術記事 PHPのjson_encode()関数と中国語文字化け問題の詳細解説 phpのjson_encode()組み込み関数(php5.2)を使うと、php内のデータを他の言語にうまく転送して利用することができます。
関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート