php json_encode加密后,有的汉字显示不出来 急解决方法
程序员文章站
2022-06-08 10:46:04
...
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 的话需要做一下编码转换
如果数据是从 mysql 读取的,那么只需在读取前执行一次
就完事大吉了
$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); });
如果数据是从 mysql 读取的,那么只需在读取前执行一次
mysql_query('set names utf8');
就完事大吉了
相关文章
相关视频