json_encode in php gbk/gb2312 中国語文字化け
1.json_encode() gbk/gb2312の中国語 中国語はnullを返します
コードは次のとおりです |
|
$arr = 配列 (
配列 (
'catid' => '4'、
'猫名' => 'www.111cn.net'、
'meta_title' => 'Yiju チュートリアル ネットワーク 2'
)
);
echo json_encode($arr);
結果
[{"catid":"4","catname":"www.111cn.net","meta_title":null}]
|
「meta_title」:null をご覧になりましたか? これには元々 Yiju Tutorial Network 2 の値がありました。これを確認したところ、原則として json_encode は uft-8 エンコーディングのみをサポートしているということです。それを変換しましょう。
コードは次のとおりです
|
|
$data="JSON 中国語";
$newData=iconv(“GB2312″,”UTF-8//IGNORE”,$data);
$newData をエコー;
//ignore は、変換中にエラーを無視することを意味します。ignore パラメーターがない場合、この文字に続くすべての文字は保存されません。
//または (“GB2312″,”UTF-8″,$data);
?>
ステップ2
バックグラウンドのPHPページ(ページがUTF-8でエンコードされているか、文字がUTF-8に変換されている)は、json_encodeを使用してPHPの配列配列をJSON文字列に変換します。例:
コードは次のとおりです |
|
$testJSON=array('name'=>'中国語文字列','value'=>'test');
echo json_encode($testJSON);
?>
出力結果を確認します:
{“名前”:”u4e2du6587u5b57u7b26u4e32″,”値”:”テスト”}
|
json_encodeを使うとUTF8でエンコードされた文字でも中国語の文字化けが発生することが分かります。解決策は、json_encode を使用する前に関数 urlencode() で文字を処理し、次に json_encode を使用して、結果を出力するときに関数 urldecode() を使用して文字を変換することです。詳細は以下の通りです
コードは次のとおりです |
|
$testJSON=array('name'=>'中国語文字列','value'=>'test');
//エコー json_encode($testJSON);
foreach ( $testJSON as $key => $value ) {
$testJSON[$key] = urlencode ( $value );
}
echo urldecode ( json_encode ( $testJSON ) );
?>
出力結果を表示します:
{"名前":"中国語文字列","値":"テスト"}
|
要約: json_encode 関数は uft8 文字列のみを処理できます。中国語の場合、中国語の gbk と uft の長さが異なるため、おそらくバイトをうまく処理できません。これについては詳しく説明しません。
http://www.bkjia.com/PHPjc/834971.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/834971.html技術記事 php gbk/gb2312 の json_encode 中国語の文字化けコード 1. gbk/gb2312 中国語の json_encode() 中国語は null を返します コードは次のとおりです。 $arr = array ( array ( 'catid' = '4', 'catname' = 'www. 111cn.net '、'm...
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
-
2024-10-22 09:46:29
-
2024-10-13 13:53:41
-
2024-10-12 12:15:51
-
2024-10-11 22:47:31
-
2024-10-11 19:36:51
-
2024-10-11 15:50:41
-
2024-10-11 15:07:41
-
2024-10-11 14:21:21
-
2024-10-11 12:59:11
-
2024-10-11 12:17:31