返されたjsonデータの中国語表示の問題
前の記事では、json形式で返された中国語はu5723u8bdeu8282u5343u4e07u597du793cu5927u5949u9001と表示されました
解決策 1:
コードをコピーします コードは次のとおりです:
関数通知(){
Include './include/conn.php' //データベースリンクファイル
;
$sql_notice = mysql_query('SELECT * FROM gg_notice whereenable = "1" 制限 0,10');
$notice = mysql_fetch_array($sql_notice, MYSQL_ASSOC);
$str = json_encode($notice);
//Linux
return preg_replace("#\u([0-9a-f]{4})#ie", "iconv('UCS-2BE', 'UTF-8', Pack('H4', '\1')) ", $str);
//ウィンドウ
//return preg_replace("#\u([0-9a-f]{4})#ie", "iconv('UCS-2LE', 'UTF-8', Pack('H4', '\1') ))", $str);
}
?>
インターネットから検索したその他の方法
コードをコピーします コードは次のとおりです:
/**
* json生成、分析は中国語をサポートします
*/
クラス Json_Helper {
/**
* json を生成します
*/
パブリック静的関数 encode($str){
$json = json_encode($str);
//linux
return preg_replace("#\u([0-9a-f]{4})#ie", "iconv('UCS-2BE', 'UTF-8', Pack('H4', '\1')) "、$json);
//ウィンドウ
//return preg_replace("#\u([0-9a-f]{4})#ie", "iconv('UCS-2LE', 'UTF-8', Pack('H4', '\1') ))", $json);
}
/**
*jsonを分析する
*/
パブリック静的関数 decode($str) {
return json_decode($str);
}
}
?>
これもネット検索で見つけた関連記事です
PHP に付属の json_encode を使用してデータをエンコードすると、中国語の文字が Unicode になり、読めなくなります。たとえば、文字列「Xiamen」を json_encoding すると、出力は「u53a6u95e8」になります。
確認後、2つの方法があります:
1. 次のコードを使用して、「u53a6u95e8」を「Xiamen」に復元します:
コードをコピーします コードは次のとおりです:
$str= preg_replace("#\u([0-9a-f]+)#ie", "iconv('UCS-2', 'UTF-8', Pack('H4', '\1')) ", $str);
2. まず中国語フィールドを urlencode および json_encode し、次に urldecode を使用して中国語を表示します。
コードをコピーします コードは次のとおりです:
$code = urldecode(json_encode(urlencode("アモイ")));
PHP バージョン 5.4 では、Json に新しいオプション JSON_UNESCAPED_UNICODE が追加されました。このオプションを追加すると、中国語は自動的にエンコードされなくなります。
コードをコピーします コードは次のとおりです:
echo json_encode("アモイ", JSON_UNESCAPED_UNICODE);
さらに、json_encode と json_decode は UTF-8 でエンコードされた文字のみをサポートするため、GBK 文字を JSON に変換する必要があります。私が作成した GBK から UTF-8 への変換コードを添付します。
コードをコピーします コードは次のとおりです:
/*
GBK 文字列のトランスコーディングは UTF-8 に変換され、数値は数値に変換されます。
*/
関数 ct2($s){
If(is_numeric($s)) {
return intval($s);
} その他 {
return iconv("GBK","UTF-8",$s);
}
}
/*
バッチ処理 gbk->utf-8
*/
関数 icon_to_utf8($s) {
foreach($s as $key => $val) {
$s[$key] = icon_to_utf8($val);
}
} その他 {
$s = ct2($s);
}
$s を返します;
echo json_encode(icon_to_utf8("アモイ"));