php json_encode加密后,有的汉字显示不出来 急解决方法

WBOY
Freigeben: 2016-06-13 12:03:58
Original
1257 Leute haben es durchsucht

php json_encode加密后,有的汉字显示不出来 急
$e=mb_detect_encoding($str) 输出个字符编码类型,怎么会这样?
ASCII-------------
UTF-8-------------,王五
UTF-8-------------,赵六
ASCII-------------2014-07-16
-------------电子商务品牌市场部
-------------工作简报
UTF-8-------------未存档
UTF-8-------------未发送
-------------经理办公室
ASCII-------------2
UTF-8-------------以后的文号只须选择文号头后系统将自动生成
UTF-8-------------我 是 谁
ASCII-------------11
ASCII-------------2014
ASCII-------------
-------------测试部门
ASCII-------------
UTF-8-------------李刚,郭美美,赵智勇,张田欣
ASCII-------------Admin
-------------工作简报的总第期数和当年期数都可以由系统自动生成,生成后在发文表列表中可以查看
UTF-8-------------研发中心
-------------集团领导
-------------急
UTF-8-------------普通
ASCII-------------
ASCII-------------

使用  json_encode 对数组加密后,输出的汉字部分是空的,怎么回事了?
各位大侠们,有没有好的解决方案? 急救


------解决方案--------------------
你原始的数据是 gbk 的,这是不能被 json_encode 所接受的
json_encode 只接受 utf-8 编码的数据,于是 gbk 汉字因不能识别而丢弃
只有少量的字符组合被错误的解释为 utf-8 双字节字符而被保留了下来,造成了你的疑惑不解,要是一个都不剩的话,反倒使事情明朗化了

所以如果你需要产生 json 的话需要做一下编码转换

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

如果数据是从 mysql 读取的,那么只需在读取前执行一次
mysql_query('set names utf8');
Nach dem Login kopieren

就完事大吉了

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage