PHP JSON格式的中文显示问题解决方法


Posted in PHP onApril 09, 2015

返回json数据中文显示的问题

上一篇文章中,返回json格式的中文显示成\u5723\u8bde\u8282\u5343\u4e07\u597d\u793c\u5927\u5949\u9001

解决方法一:

<?php 

function Notice(){

    include './include/conn.php';  //数据库链接文件

    $sql_notice = mysql_query('SELECT * FROM gg_notice where enable = "1" limit 0,10');

    $notice = mysql_fetch_array($sql_notice, MYSQL_ASSOC);

    $str = json_encode($notice);

    //linux

    return preg_replace("#\\\u([0-9a-f]{4})#ie", "iconv('UCS-2BE', 'UTF-8', pack('H4', '\\1'))", $str);

    //windows

    //return preg_replace("#\\\u([0-9a-f]{4})#ie", "iconv('UCS-2LE', 'UTF-8', pack('H4', '\\1'))", $str);

    

}

?>

另外从网上搜索到的其他方法

<?php

/**

 * json 生成,分析 支持中文

 */

class Json_Helper {

    /**

     * 生成json

     */

    public static function encode($str){

        $json = json_encode($str);

        //linux

        return preg_replace("#\\\u([0-9a-f]{4})#ie", "iconv('UCS-2BE', 'UTF-8', pack('H4', '\\1'))", $json);

        //windows

        //return preg_replace("#\\\u([0-9a-f]{4})#ie", "iconv('UCS-2LE', 'UTF-8', pack('H4', '\\1'))", $json);

    }
    /**

     * 分析json

     */

    public static function decode($str) {

        return json_decode($str);

    }

}

?>

这是从网上搜索得到的又一篇相关文章

当使用php自带的json_encode对数据进行编码时,中文都会变成unicode,导致不可读。如:对字符串”厦门“进行json_encode后,输出的是"\u53a6\u95e8"。

查询了一下,有两种方法:
1.将"\u53a6\u95e8"还原成“厦门”,使用如下的代码:

$str= preg_replace("#\\\u([0-9a-f]+)#ie", "iconv('UCS-2', 'UTF-8', pack('H4', '\\1'))", $str);

2.先将中文字段urlencode,json_encode后,再用urldecode,也可以显示中文。

$code = urldecode(json_encode(urlencode("厦门")));

PHP5.4版本,已经给Json新增了一个选项: JSON_UNESCAPED_UNICODE。加上这个选项后,就不会自动把中文编码了。

echo json_encode("厦门", JSON_UNESCAPED_UNICODE);

另,由于 json_encode 和 json_decode只支持utf-8编码的字符,GBK的字符要用json就得转换一下,附自己写的GBK转UTF-8的代码:
/*

    字符串GBK转码为UTF-8,数字转换为数字。

*/

function ct2($s){

    if(is_numeric($s)) {

        return intval($s);

    } else {

        return iconv("GBK","UTF-8",$s);

    }

}

/*

    批量处理gbk->utf-8

*/

function icon_to_utf8($s) {
  if(is_array($s)) {

    foreach($s as $key => $val) {

      $s[$key] = icon_to_utf8($val);

    }

  } else {

      $s = ct2($s);

  }

  return $s;
}
echo json_encode(icon_to_utf8("厦门"));
PHP 相关文章推荐
在线短消息收发的程序,不用数据库
Oct 09 PHP
php正则过滤html标签、空格、换行符的代码(附说明)
Oct 25 PHP
PHP输入流php://input介绍
Sep 18 PHP
php多层数组与对象的转换实例代码
Aug 05 PHP
php中的PHP_EOL换行符详细解析
Oct 26 PHP
php内核解析:PHP中的哈希表
Jan 30 PHP
CodeIgniter中实现泛域名解析
Jul 19 PHP
PHP编译安装中遇到的两个错误和解决方法
Aug 20 PHP
php+xml实现在线英文词典之添加词条的方法
Jan 23 PHP
php可扩展的验证类实例(可对邮件、手机号、URL等验证)
Jul 09 PHP
PHP读取CSV大文件导入数据库的实例
Jul 24 PHP
总结PHP代码规范、流程规范、git规范
Jun 18 PHP
Laravel 5框架学习之用户认证
Apr 09 #PHP
PHP中把数据库查询结果输出为json格式简单实例
Apr 09 #PHP
Laravel 5框架学习之Eloquent 关系
Apr 09 #PHP
在html文件中也可以执行php语句的方法
Apr 09 #PHP
PHP统一页面编码避免乱码问题
Apr 09 #PHP
PHP生成静态HTML页面最简单方法示例
Apr 09 #PHP
Laravel 5框架学习之子视图和表单复用
Apr 09 #PHP
You might like
是否存在第一台收音机的说法
2021/03/01 无线电
用PHP实现将GB编码转换为UTF8
2006/11/25 PHP
用缓存实现静态页面的测试
2006/12/06 PHP
php中通过smtp发邮件的类,测试通过
2007/01/22 PHP
实现dedecms全站URL静态化改造的代码
2007/03/29 PHP
利用curl抓取远程页面内容的示例代码
2013/07/23 PHP
PHP 实现判断用户是否手机访问
2015/01/21 PHP
php版交通银行网银支付接口开发入门教程
2016/09/26 PHP
thinkPHP5 ACL用户权限模块用法详解
2017/05/10 PHP
使用prototype.js进行异步操作
2007/02/07 Javascript
jquery.simple.tree插件 更简单,兼容性更好的无限树插件
2010/09/03 Javascript
Jquery 点击按钮显示和隐藏层的代码
2011/07/25 Javascript
axios向后台传递数组作为参数的方法
2018/08/11 Javascript
简单了解Ajax表单序列化的实现方法
2019/06/14 Javascript
Javascript中的奇葩知识,你知道吗?
2021/01/25 Javascript
python字符串替换的2种方法
2014/11/30 Python
Python可变参数用法实例分析
2017/04/02 Python
简单谈谈python中的lambda表达式
2018/01/19 Python
python SMTP实现发送带附件电子邮件
2018/05/22 Python
Python快速转换numpy数组中Nan和Inf的方法实例说明
2019/02/21 Python
Python 的AES加密与解密实现
2019/07/09 Python
python通过robert、sobel、Laplace算子实现图像边缘提取详解
2019/08/21 Python
Python统计学一数据的概括性度量详解
2020/03/03 Python
python如何将两张图片生成为全景图片
2020/03/05 Python
python 读txt文件,按‘,’分割每行数据操作
2020/07/05 Python
python单元测试框架pytest的使用示例
2020/10/07 Python
详解selenium + chromedriver 被反爬的解决方法
2020/10/28 Python
电子邮箱格式怎么写
2014/01/12 职场文书
酒店保安员岗位职责
2014/01/31 职场文书
简历里的自我评价范文
2014/02/24 职场文书
事业单位绩效考核实施方案
2014/03/27 职场文书
计算机软件专业求职信
2014/06/10 职场文书
社团活动总结报告
2014/06/27 职场文书
2014年纪委工作总结
2014/12/05 职场文书
医院合作意向书范本
2015/05/08 职场文书
导游词之镇江西津古渡
2019/11/06 职场文书