JSON でエンコードされた中国語の文字が文字化けするのはなぜですか?
次のコードをエンコードした後、u の文字が文字化けするのはなぜですか? 以前は、JAVA を使用して JSON をエンコードした後、文字はすべて通常の漢字でした。何が起こっているのでしょうか?それを解決するには?
<br /> $test = new stdClass();<br /> $test->a = ("中文名称");<br /> $test->b = ("测试程序。");<br /> echo json_encode($test, JSON_FORCE_OBJECT);<br />
ログイン後にコピー
上記のコードのエンコード結果は次のとおりです:
{"a":"u4e2du6587u540du79f0","b":"u6d4bu8bd5u7a0bu5e8fu3002"}
--- --- 解決策 --------------------echo
urldecode ( json_encode($test, JSON_FORCE_OBJECT) ); >
urldecode
を追加すれば問題ありません-----解決策---------
それは文字化けではなく、json_encode以降の漢字はそのようになっています。
------解決策---------
u は文字化けしたコードではなく、文字化けを防ぐためのものですcode Unicodeコードを変換しただけです
-----解決策---------
これは文字化けしたコードではありません、それはユニオンコードです。
中国語を正常に表示したい場合は、http://blog.csdn.net/fdipzone/article/details/28766357
-----解決策----を参照してください。 --- -------------
json_encode はエンコード関数なので、結果は当然エンコードされた結果になります
コンポーネントがいくつかあるのが普通ではないでしょうか認識できないってこと?
$s = "中文名称";<br />echo urlencode($s); //%E4%B8%AD%E6%96%87%E5%90%8D%E7%A7%B0<br />echo base64_encode($s); //5Lit5paH5ZCN56ew<br />
ログイン後にコピー
これらのエンコードの結果を受け入れることができるので、
echo json_encode($s); //"u4e2du6587u540du79f0"
の結果を受け入れてみませんか?
なぜ Unicode の 16 進数の内部コードで表現しているのかというと、個人的には PHP
1 の失敗だと思います。Unicode の内部コードを取得する必要があるため、文字セットの識別に問題があります。受信データ用。文字セットを認識できないため、json 関数は utf-8
2 にのみ適用されます。ブラウザに渡される文字セット内のテキストはブラウザによって一律に Unicode エンコードに変換されるため、エンコード変換は次のように行われます。 json_encodeは無意味です。ブラウザは、16 進文字列を Unicode 内部コード
に変換する必要があります。