php中json_encode处理gbk与gb2312中文乱码问题的解决方法


Posted in PHP onJuly 10, 2014

本文讲述了php中json_encode处理gbk与gb2312中文乱码问题的解决方法,具体方法如下:

1.json_encode()中文在gbk/gb2312中对中文返回为null

$arr = array ( 
 array ( 
   'catid' => '4', 
   'catname' => '3water.com', 
   'meta_title' => '三水点靠木' 
  )
);
 
echo json_encode($arr);

运行结果:

[{"catid":"4","catname":"3water.com","meta_title":null}]

看一了吗"meta_title":null 他本来是有一个值的为"三水点靠木"了,这个我们查了一下原理是json_encode只支持uft-8编码,我们转换一下
 

<?php
$data="JSON中文";
$newData=iconv("GB2312″,"UTF-8//IGNORE",$data);
echo $newData;
//ignore的意思是忽略转换时的错误,如果没有ignore参数,所有该字符后面的字符都不会被保存。
//或是("GB2312″,"UTF-8″,$data);
?>

2.后台PHP页面(页面编码为UTF-8或者已经把字符转为UTF-8)使用json_encode将PHP中的array数组转为JSON字符串。例如:

<?php
$testJSON=array('name'=>'中文字符串','value'=>'test');
echo json_encode($testJSON);
?>

查看输出结果为:

{"name":"u4e2du6587u5b57u7b26u4e32″,"value":"test"}

可见即使用UTF8编码的字符,使用json_encode也出现了中文乱码。解决办法是在使用json_encode之前把字符用函数urlencode()处理一下,然后再json_encode,输出结果的时候再用函数urldecode()转回来。具体如下:

<?php
$testJSON=array('name'=>'中文字符串','value'=>'test');
//echo json_encode($testJSON);
foreach ( $testJSON as $key => $value ) {
$testJSON[$key] = urlencode ( $value );
}
echo urldecode ( json_encode ( $testJSON ) );
?>

查看输出结果为:

{"name":"中文字符串","value":"test"}

总结:json_encode函数只能处理uft8字符串,如果是中文估计是对字节处理不好,因为中文gbk与uft长度是不一样的,这个也不做深入介绍了。

PHP 相关文章推荐
PHP4与PHP3中一个不兼容问题的解决方法
Oct 09 PHP
php mssql 数据库分页SQL语句
Dec 16 PHP
php cookis创建实现代码
Mar 16 PHP
PHP小程序自动提交到自助友情连接
Nov 24 PHP
php array的学习笔记
May 10 PHP
深入解析php之sphinx
May 15 PHP
基于PHP实现简单的随机抽奖小程序
Jan 05 PHP
php获得文件夹下所有文件的递归算法的简单实例
Nov 01 PHP
PHP随机获取未被微信屏蔽的域名(微信域名检测)
Mar 19 PHP
PHP对象相关知识总结
Apr 09 PHP
php 类中的常量、静态属性、非静态属性的区别
Apr 09 PHP
PHP获取学生成绩的方法
Nov 17 PHP
PHP5.3与5.5废弃与过期函数整理汇总
Jul 10 #PHP
ThinkPHP标签制作教程
Jul 10 #PHP
YII路径的用法总结
Jul 09 #PHP
YII实现分页的方法
Jul 09 #PHP
YII模块实现绑定二级域名的方法
Jul 09 #PHP
yii操作cookie实例简介
Jul 09 #PHP
Yii调试SQL的常用方法
Jul 09 #PHP
You might like
珊瑚虫IP库浅析
2007/02/15 PHP
php+ajax实现文章自动保存的方法
2014/12/30 PHP
jquery中的过滤操作详细解析
2013/12/02 Javascript
用JS在浏览器中创建下载文件
2014/03/05 Javascript
jquery实现鼠标滑过显示二级下拉菜单效果
2015/08/24 Javascript
javascript函数命名的三种方式及区别介绍
2016/03/22 Javascript
jQuery实现表格与ckeckbox的全选与单选功能
2016/11/24 Javascript
jQuery实现简单弹窗遮罩效果
2017/02/27 Javascript
jquery实现左右滑动式轮播图
2017/03/02 Javascript
浅谈mint-ui loadmore组件注意的问题
2017/11/08 Javascript
基于JavaScript实现简单的音频播放功能
2018/01/07 Javascript
傻瓜式vuex语法糖kiss-vuex整理
2018/12/21 Javascript
vue-cli 项目打包完成后运行文件路径报错问题
2019/07/19 Javascript
el-input 标签中密码的显示和隐藏功能的实例代码
2019/07/19 Javascript
javascript 对象 与 prototype 原型用法实例分析
2019/11/11 Javascript
vue中使用vue-pdf的方法详解
2020/09/05 Javascript
[02:08]DOTA2英雄基础教程 马格纳斯
2014/01/17 DOTA
[04:42]5分钟带你了解什么是DOTA2(第一期)
2017/02/07 DOTA
python登录QQ邮箱发信的实现代码
2013/02/10 Python
python调用fortran模块
2016/04/08 Python
Python匹配中文的正则表达式
2016/05/11 Python
python 用正则表达式筛选文本信息的实例
2018/06/05 Python
python全栈知识点总结
2019/07/01 Python
python中树与树的表示知识点总结
2019/09/14 Python
Pycharm+Python工程,引用子模块的实现
2020/03/09 Python
意大利综合购物网站:Giordano Shop
2016/10/21 全球购物
Java的五个基础面试题
2016/02/26 面试题
自主招生自荐信
2013/12/08 职场文书
电脑饰品店的创业计划书
2014/01/21 职场文书
购房委托书范本
2014/09/18 职场文书
计算机专业自荐信范文
2015/03/26 职场文书
2015年酒店工作总结范文
2015/04/07 职场文书
大学生社会实践活动总结报告
2015/05/06 职场文书
力克胡哲观后感
2015/06/10 职场文书
搞笑婚庆主持词
2015/06/29 职场文书
动作冒险《Hell Is Us》将采用虚幻5 消灭怪物探索王国
2022/04/13 其他游戏