ホームページ  >  記事  >  バックエンド開発  >  php_PHP チュートリアルの json 中国語文字化けコードを解決する関数

php_PHP チュートリアルの json 中国語文字化けコードを解決する関数

WBOY
WBOYオリジナル
2016-07-13 10:54:37908ブラウズ

phpチュートリアルにはjsonデータを処理するためのjson_encodeが付属しているため、中国語は十分にサポートされていません

例を見てみましょう。

echo json_encode(array(123213,'中国'));


{"プラットフォーム ID":"123213","ユーザー ID":"1023","ユーザー名":"u00b7u00f0u00b5u00b2u00c9u00b1u00b7u00f0u00ccu00fc"}

英語は正しく解析できることがわかりますが、中国語は u00b7u00f0u00b5u00b2u00c9u00b1u00b7u00f0u00ccu00fc として出力されます。ああ、これは Unicode エンコードである可能性がありますが、テストしたことはなく、単なる推測です。 jsonの中国語文字化けを解決する関数を見てみましょう

プライベート関数 to_utf8($in)
{
if (is_array($in)) {
foreach ($in as $key => $value)
{
$out[$this->to_utf8($key)] = $this->to_utf8($value); }
}
elseif(is_string($in))
{
if(mb_detect_encoding()($in) != "utf-8")
utf8_encode($in) を返します。 それ以外は

ドルを返します。 }
それ以外は
{

ドルを返します。 }
$out を返します。 }


1. $usr->usernameを直接出力し、文字化けしたページにcharset=utf-8を設定します。 2.echo json_encode($usr) 出力 username=null

3. ページヘッダーは charset=gbk に設定されており、出力は正しいです -> 元のエンコーディングが gbk であると判断できます
最終的に、IE、Chrome、Firefox のテストを通じて、次の結論に達しました:



1. ページの文字セットがデータベース チュートリアルと一致していることを確認し、出力が正常である必要があります。
2. json_encode を実行するときは、データ エンコーディングが utf-8 であり、json_decode が通常であることを確認してください。

3. 非 utf-8 文字を json_encode する場合は、まずそれらを utf-8 に変換します。

4. utf-8 以外の文字に対して json_decode を行う場合は、必ず元のエンコーディングに変換することを忘れないでください。変換しないと文字化けが出力されます!!



http://www.bkjia.com/PHPjc/632302.html

www.bkjia.com

http://www.bkjia.com/PHPjc/632302.html技術記事 PHP チュートリアルには、JSON データを処理するための json_encode が付属しているため、中国語のサポートは十分ではありません。 echo json_encode(array(123213,'China')); の例を見てみましょう。
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。