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

 更新时间:2014年07月10日 18:21:28   投稿:shichen2014  
这篇文章主要介绍了php中json_encode处理gbk与gb2312中文乱码问题的解决方法,需要的朋友可以参考下

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

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

$arr = array ( 
 array ( 
   'catid' => '4', 
   'catname' => 'www.jb51.net', 
   'meta_title' => '脚本之家' 
  )
);
 
echo json_encode($arr);

运行结果:

[{"catid":"4","catname":"www.jb51.net","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实现从上传文件创建缩略图的方法

    php实现从上传文件创建缩略图的方法

    这篇文章主要介绍了php实现从上传文件创建缩略图的方法,涉及php操作上传文件及图片操作的技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-04-04
  • PHP操作Redis常用技巧总结

    PHP操作Redis常用技巧总结

    这篇文章主要介绍了PHP操作Redis常用技巧,结合实例形式总结分析了php针对redis的连接、认证、string、hash等操作技巧与注意事项,需要的朋友可以参考下
    2018-04-04
  • 用PHP ob_start()控制浏览器cache、生成html实现代码

    用PHP ob_start()控制浏览器cache、生成html实现代码

    Output Control 函数可以让你自由控制脚本中数据的输出。它非常地有用,特别是对于:当你想在数据已经输出后,再输出文件头的情况。
    2010-02-02
  • php时间戳转换代码详解

    php时间戳转换代码详解

    在本篇文章里小编给各位分享一篇关于php时间戳转换的知识点内容,有需要的朋友们可以参考下。
    2019-08-08
  • PHP实现获取文件mime类型多种方法解析

    PHP实现获取文件mime类型多种方法解析

    这篇文章主要介绍了PHP实现获取文件mime类型多种方法解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-05-05
  • Mac M1安装mnmp(Mac+Nginx+MySQL+PHP)开发环境

    Mac M1安装mnmp(Mac+Nginx+MySQL+PHP)开发环境

    这篇文章主要介绍了Mac M1安装mnmp(Mac+Nginx+MySQL+PHP)开发环境,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-03-03
  • php获取当前url地址的方法小结

    php获取当前url地址的方法小结

    这篇文章主要介绍了php获取当前url地址的方法,结合实例形式JS获取URL的方法对比分析了php获取URL的常用技巧,需要的朋友可以参考下
    2017-01-01
  • PHP实现上传文件并存进数据库的方法

    PHP实现上传文件并存进数据库的方法

    这篇文章主要介绍了PHP实现上传文件并存进数据库的方法,涉及php文件上传所涉及的文件与表单操作及数据库操作相关技巧,非常具有实用价值,需要的朋友可以参考下
    2015-07-07
  • PHP 应用容器化以及部署方法

    PHP 应用容器化以及部署方法

    本文给大家分享的是如何把PHP应用容器化,以及使用docker在服务器上部署PHP应用,非常的简单实用,有需要的小伙伴可以参考下
    2018-02-02
  • ucenter通信原理分析

    ucenter通信原理分析

    这篇文章主要介绍了ucenter通信原理分析,大名鼎鼎的ucenter相信做站长的都知道,本文即来分析它的实现原理,需要的朋友可以参考下
    2015-01-01

最新评论