phpのjson_encode()を使用する場合、英語や数字であれば問題ないのですが、中国語を使用すると認識できない中国語の文字化けが発生します。 json_encodeの中国語の文字化けを解決する方法を見てみましょう。
オンラインで解決策を見つけました:
コードは次のとおりです | コードをコピー |
/* 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は次のように説明しました。 | 標準 Base64 は、URL での直接送信には適していません。これは、URL エンコーダーが標準 Base64 の「/」と「+」文字を「%XX」の形式に変更し、これらの「%」文字が保存時に含まれるためです。 ANSI SQL では「%」記号がワイルドカード文字として使用されているため、データベースに変換する必要があります。
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() { | |
$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」 |
。