php5.2Json不能正确处理中文、GB编码的解决方法
2023-06-13 09:15:24 时间
php5.2新增的json功能是非常受欢迎的,但是经过测试发现,
json_encode对中文的处理是有问题的,
1.不能处理GB编码,所有的GB编码都会替换成空字符.
2.utf8编码的中文被编码成unicode编码,相当于javascript的escape函数处理的结果.
复制代码代码如下:
json_encode对中文的处理是有问题的,
1.不能处理GB编码,所有的GB编码都会替换成空字符.
2.utf8编码的中文被编码成unicode编码,相当于javascript的escape函数处理的结果.
/*
为了能正确使用json,首先我们就应该在编码上采用utf8编码,然后再对json_encode的返回结果稍加处理就可以得到正确的结果了。
我写了一个简单的类,将这两个函数包装了一下,
**/
classJson{
publicstaticfunctionencode($str){
$code=json_encode($str);
returnpreg_replace("#\\\u([0-9a-f]+)#ie","iconv("UCS-2","UTF-8",pack("H4","\\1"))",$code);
}
publicstaticfunctiondecode($str){
returnjson_decode($str);
}
}
//使用的时候
Json::encode($code);
Json::decode($code);
/**这样可以正确处理utf8编码的中文了。
PS:对于GB编码的中文,我们可以在编码时先转成UTF8编码,再进行编码,解码的时候再进行一个utf8->gb的转换就可以了。
另外一般json_encode的结果我们是返回到客户端来使用,我们其实还可以用javascript的unescape函数来对unicode编码的中文进行解码,从而还原成正确的中文。
或者用:$title=mb_convert_encoding($title,"HTML-ENTITIES",$this->_outCharset);//任意编码下都正常显示
********/
相关文章
- mysql中文占几个char_数据库中一个汉字占几个字符?
- 中文分词技术是什么_中文分词技术
- AppCode 2022 for Mac(iOS代码编写利器)v2022.2.4中文特别版
- 中文哈夫曼编码
- Guitarpro8.1最新中文版本新功能简谱
- 最新Mac中文Illustrator2023AI2023AI软件最新版安装教程Illustrator永久激活AI2023下载安装激活
- AN动画制作软件需要的软件 An下载:Adobe Animate 2023中文汉化激活版
- 字符编码MySQL配置中文字符编码实现双语互通(mysql设置中文)
- MySQL中文的问号之谜(mysql中文是问号)
- 科幻巨制《沙丘》中文片名及Logo正式公布 内地仍未定档
- MySQL字段名中文编码实现方案(mysql中文列名)
- Linux C:优雅处理中文字符编码(linuxc处理中文)
- Oracle排序:优雅的中文编码体系(oracle排序中文)
- 使用MySQL查询中文编码问题及解决方法(mysql编码查询)
- 探究Oracle数据库中文乱码原因(oracle数据中文乱码)
- mssql中文编码转换技术实践(mssql 编码转中文)
- MySQL 突然闪退怎么办25字中文文章标题(mysql一登录就闪退)
- MySQL编码问题无法存储中文字符(mysql 不能保存汉字)
- Oracle中文编码转换技术实现(oracle中文转编码)
- Oracle中文操作手册指南(oracle中文操作手册)
- Oracle中文编码指南(oracle中文怎么编码)
- Oracle中文编码的奥秘CHR(oracle中文chr)
- 包含中文字符的URL编码问题
- phpMsSqlserver时遇到的中文编码问题
- 编码为GB2312网站让AJAX接收的数据显示支持中文
- jQueryUIAutocomplete1.8.16中文输入修正代码
- c#通过unicode编码判断字符是否为中文示例分享
- JavaEE中用response向客户端输出中文数据乱码问题分析
- 访问编码后的中文URL返回404错误的解决方法