ホームページ >バックエンド開発 >PHPチュートリアル >json_encode gbk/gb2312 php_PHP チュートリアルの中国語コードが文字化けする
1.json_encode() gbk/gb2312の中国語 中国語はnullを返します
コードは次のとおりです | |
$arr = 配列 ( 配列 ( 'catid' => '4'、 '猫名' => 'www.111cn.net'、 'meta_title' => 'Yiju チュートリアル ネットワーク 2' ) 結果 [{"catid":"4","catname":"www.111cn.net","meta_title":null}] |
「meta_title」:null をご覧になりましたか? これには元々 Yiju Tutorial Network 2 の値がありました。これを確認したところ、原則として json_encode は uft-8 エンコーディングのみをサポートしているということです。それを変換しましょう。
コードは次のとおりです | |
$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 関数は uft8 文字列のみを処理できます。中国語の場合、中国語の gbk と uft の長さが異なるため、おそらくバイトをうまく処理できません。これについては詳しく説明しません。