ホームページ  >  記事  >  バックエンド開発  >  php json_encode を暗号化すると一部の漢字が表示されなくなります 緊急解決策

php json_encode を暗号化すると一部の漢字が表示されなくなります 緊急解決策

WBOY
WBOYオリジナル
2016-06-13 12:03:581260ブラウズ

php json_encode が暗号化されると、一部の中国語の文字が表示されなくなります。 Urgent
$e=mb_detect_encoding($str) が文字エンコーディング タイプを出力するのはなぜですか?
ASCII---------------
UTF-8-------------、Wang Wu
UTF-8----- --------、Zhao Liu
ASCII-------------2014-07-16
-------------電子ビジネス ブランド マーケティング部
---------------業務説明会
UTF-8---------------未アーカイブ
UTF-8- - -----------未送信
---------------管理者室
ASCII-------------2
UTF-8--------------- 今後の文書番号については、文書番号ヘッダーを選択するだけで、システムが自動的に
UTF-8----------- を生成します。 - ---私は誰ですか
ASCII-------------11
ASCII-------------2014
ASCII--- - ----------
---------------テスト部門
ASCII-------------
UTF -8 -------------Li Gang、Guo Meimei、Zhao Zhiyong、Zhang Tianxin
ASCII-------------管理者
--- ---- ------作業概要の総号数と現在の号数はシステムによって自動的に生成され、生成後に出版物リストで確認できます
UTF-8---。 -------- --研究開発センター
---------------グループリーダー
---------------緊急
UTF-8----- --------通常
ASCII-------------
ASCII------------ -

を使用する json_encode で配列を暗号化すると、出力の漢字部分が空になります。何が起こっているのでしょうか?
何か良い解決策はありますか?応急処置


-----解決策---------------------------- ---
あなたのオリジナル データは gbk ですが、json_encode では受け入れられません
json_encode は utf-8 でエンコードされたデータのみを受け入れます。そのため、gbk の中国語文字は認識できないため破棄されます
少数の文字の組み合わせが誤って utf-8 として解釈されます。 2 バイト文字が保持され、混乱が生じます。 何も残っていなければ、状況が明確になります。

json を生成する必要がある場合は、次のことが必要です。エンコード変換を行うため

array_walk_recursive($ar, function(&$s) { $s = iconv('gbk', 'utf-8', $s); });

データが mysql から読み取られる場合は、
mysql_query('set names utf8');

を読み取る前に一度実行するだけで完了です

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。