b = ("テスト プログラム");"/> b = ("テスト プログラム");">

ホームページ >バックエンド開発 >PHPチュートリアル >json でエンコードされた漢字はどのようにして文字化けするのでしょうか?

json でエンコードされた漢字はどのようにして文字化けするのでしょうか?

WBOY
WBOYオリジナル
2016-06-13 12:05:041167ブラウズ

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 内部コード


に変換する必要があります。
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。