ホームページ  >  記事  >  バックエンド開発  >  PHP JSON 形式の中国語表示問題の解決策、_PHP チュートリアル

PHP JSON 形式の中国語表示問題の解決策、_PHP チュートリアル

WBOY
WBOYオリジナル
2016-07-13 09:57:301610ブラウズ

PHP JSON形式での中国語表示の問題の解決策、

返された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) {

if(is_array($s)) {

foreach($s as $key => $val) {
$s[$key] = icon_to_utf8($val);
}
} その他 {
$s = ct2($s);
}
$s を返します;

}

echo json_encode(icon_to_utf8("アモイ"));


www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/981352.html技術記事 PHP JSON形式での中国語表示問題の解決策 前回の記事では、返されたjsonデータの中国語表示がu5723u8bdeu8282u5343u4e07u597d...
と表示されました。
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。