ホームページ  >  記事  >  バックエンド開発  >  php json_encode() function_PHP チュートリアルでの文字化けした中国語エンコーディングの解決策

php json_encode() function_PHP チュートリアルでの文字化けした中国語エンコーディングの解決策

WBOY
WBOYオリジナル
2016-07-13 16:59:55942ブラウズ

phpのjson_encode()を使用する場合、英語や数字であれば問題ないのですが、中国語を使用すると認識できない中国語の文字化けが発生します。 json_encodeの中国語の文字化けを解決する方法を見てみましょう。

オンラインで解決策を見つけました:

標準 Base64 は、URL での直接送信には適していません。これは、URL エンコーダーが標準 Base64 の「/」と「+」文字を「%XX」の形式に変更し、これらの「%」文字が保存時に含まれるためです。 ANSI SQL では「%」記号がワイルドカード文字として使用されているため、データベースに変換する必要があります。
コードは次のとおりです コードをコピー
/* json_encode の中国語文字化けを処理します */
$data = array ('game' => '火と氷の国', 'name' => '茨の精霊', 'country' => '霜の国', 'level' =>
); エコー json_encode ( $data ); エコー「
」; $newData = 配列 (); foreach ( $data as $key => $value ) {
$newData [$key] = urlencode ( $value ); }
echo urldecode ( json_encode ( $newData ) ); ?>



後で他の人にアドバイスを求めたところ、base64エンコーディングも使用できますが、Baiduは次のように説明しました。
ただし、私のデータは POST 経由で送信され、HTTP ヘッドではなくメッセージ本文にあるため、影響を受けません。

json_encode は utf-8 形式のデータのみを受け入れることができます

例: json_encode 処理後、「Xu」は「u80e5」になり、最終的な json の中国語部分は Unicode エンコーディングに置き換えられます。私たちが解決しなければならないのは、オブジェクトを json に変換し、オブジェクト内の中国語が json 内で通常の中国語として表示されるようにすることです。json_encode を使用するだけでは目標を達成できないようです。 私の解決策:最初にクラス内の中国語フィールドをURLエンコード(urlencode)し、次にオブジェクトをJSONエンコード(jsonencode)し、最後にJSON、つまり最後のJSONをURLデコード(urldecode)します。内部の中国語は依然として同じ中国語です! テストコードは次のとおりです:



コードは次のとおりです

コードをコピー クラス myClass { パブリック $item1 = 1; パブリック $item2 = '中国語'; 関数 to_json() { //URL エンコード、中国語を Unicode に変換する json_encode を回避します $this->item2 = urlencode($this->item2); $str_json = json_encode($this); // URL をデコードし、オブジェクト属性が変更されないように JSON に変換した後に各属性を返します
$this->item2 = urldecode($this->item2); urldecode($str_json)を返します
}
}
$c = 新しい myClass(); エコー json_encode($c); エコー '
'; エコー $c->to_json(); エコー '
'; エコー json_encode($c); エコー '
'; echo json_encode('襥'); ?>



プログラム出力結果:



コードは次のとおりです

コードをコピー



{"アイテム1":1,"アイテム2":"u4e2du6587"}
{"item1":1,"item2":"中文"}
{"アイテム1":1,"アイテム2":"u4e2du6587"}
「u80e5」

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/631284.html技術記事 phpのjson_encode()を使用する場合、英語や数字であれば問題ないのですが、中国語を使用すると認識できない中国語文字化けが発生します。 json_encodeの中国語文字化けを解決する方法を見てみましょう...
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。