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 相关文章推荐
PHP中对数据库操作的封装
Oct 09 PHP
探讨file_get_contents与curl效率及稳定性的分析
Jun 06 PHP
php通过字符串调用函数示例
Mar 02 PHP
php+highchats生成动态统计图
May 21 PHP
CentOS 安装 PHP5.5+Redis+XDebug+Nginx+MySQL全纪录
Mar 25 PHP
PHP生成plist数据的方法
Jun 16 PHP
为你总结一些php信息函数
Oct 21 PHP
php中文字符串截取多种方法汇总
Oct 06 PHP
PHP实现的折半查找算法示例
Dec 19 PHP
tp5(thinkPHP5)操作mongoDB数据库的方法
Jan 20 PHP
PHP框架实现WebSocket在线聊天通讯系统
Nov 21 PHP
PHP遍历数组的6种方式总结
Nov 17 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
网页游戏开发入门教程二(游戏模式+系统)
2009/11/02 PHP
解决php接收shell返回的结果中文乱码问题
2014/01/23 PHP
PHP封装的一个支持HTML、JS、PHP重定向的多功能跳转函数
2014/06/19 PHP
PHP实现HTML生成PDF文件的方法
2014/11/07 PHP
PHP中实现中文字串截取无乱码的解决方法
2018/05/29 PHP
玩转jQuery按钮 请告诉我你最喜欢哪些?
2012/01/08 Javascript
javascript 使用 NodeList需要注意的问题
2013/03/04 Javascript
jQuery 无限级菜单的简单实例
2014/02/21 Javascript
javascript实现简单的on事件绑定
2016/08/23 Javascript
KnockoutJS 3.X API 第四章之click绑定
2016/10/10 Javascript
Vue底层实现原理总结
2018/02/17 Javascript
React通过redux-persist持久化数据存储的方法示例
2019/02/14 Javascript
深入理解react 组件类型及使用场景
2019/03/07 Javascript
详解vue中this.$emit()的返回值是什么
2019/04/07 Javascript
Vue+Element UI+vue-quill-editor富文本编辑器及插入图片自定义
2019/08/20 Javascript
浅谈js中的attributes和Attribute的用法与区别
2020/07/16 Javascript
Python单元测试框架unittest使用方法讲解
2015/04/13 Python
python实现点对点聊天程序
2018/07/28 Python
Python去除字符串前后空格的几种方法
2019/03/04 Python
Python redis操作实例分析【连接、管道、发布和订阅等】
2019/05/16 Python
10分钟用python搭建一个超好用的CMDB系统
2019/07/17 Python
Python的bit_length函数来二进制的位数方法
2019/08/27 Python
python通过实例讲解反射机制
2019/10/17 Python
Python浮点数四舍五入问题的分析与解决方法
2019/11/19 Python
Django 路由层URLconf的实现
2019/12/30 Python
pytorch实现线性拟合方式
2020/01/15 Python
在tensorflow中设置使用某一块GPU、多GPU、CPU的操作
2020/02/07 Python
Python常用扩展插件使用教程解析
2020/11/02 Python
What's the difference between an interface and abstract class? (接口与抽象类有什么区别)
2012/10/29 面试题
医学院学生求职简历的自我评价
2013/10/24 职场文书
医学生自荐信
2013/12/03 职场文书
2014年国庆节活动总结
2014/08/26 职场文书
学习党的群众路线教育实践活动剖析材料
2014/10/13 职场文书
前台接待岗位职责范本
2015/04/03 职场文书
工作收入证明模板
2015/06/12 职场文书
恶魔之树最顶端的三颗果实 震震果实上榜,第一可以制造岩浆
2022/03/18 日漫