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

php_PHPチュートリアルのjson_encode形式の中国語の問題の解決策

WBOY
WBOYオリジナル
2016-07-21 14:53:30795ブラウズ

1.原因分析:

データベースに保存する場合、MySQL は Unicode 文字を保存しません:

MySQL は、基本的な多言語フラット文字 (0x0000-0xFFFF) のみをサポートします。代わりに同義語を保存してみてください:)

更新: MySQL 5.5.3 (まだ GA ではありません) では、UTF8MB4 エンコーディングを使用する場合に補助文字がサポートされます。

json_encode 中国語を実行すると、各漢字は「uxxxx」にエンコードされます

データベースに保存するとき、「」はブロックされ、直接「uxxxx」になります

2. 問題を解決します:

原因を知ることで問題を解決できます。他の保管方法を選択することもできます。

あるいは、「」をさらに「」にエスケープして「」を保持するための適切な措置を講じてください

私たちのソリューション:

1. 中国語を Unicode エンコーディングに変換する json_encode を回避します。

PHP バージョン 5.4 では、Json に新しいオプション JSON_UNESCAPED_UNICODE が追加されました。このオプションを追加すると、中国語は自動的にエンコードされなくなります。

$test = json_encode("深セン", JSON_UNESCAPED_UNICODE);

2. まず中国語フィールドを urlencode および json_encode し、次に urldecode を使用して中国語フィールドが Unicode に変換されないようにします。

$test =urldecode(json_encode(array('brief'=>urlencode(' Introduction'),'title'=>urlencode(title)));

3. Unicode 中国語が mysql によって特殊文字として削除される前に、'' を避けるためにさらに "" を "" にエスケープします

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

tru​​ehttp://www.bkjia.com/PHPjc/371391.html技術記事 1. 原因分析: データベースに保存する場合、MySQL は Unicode 文字を保存しません。MySQL は、基本的な多言語フラット文字 (00000-0xFFFF) のみをサポートします。代わりに同義語を保存してみてください...
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。