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调用Java对象的方法
Oct 09 PHP
ThinkPHP3.1查询语言详解
Jun 19 PHP
PHP+apc+ajax实现的ajax_upload上传进度条代码
Jan 25 PHP
PHP模板引擎Smarty自定义变量调解器用法
Apr 11 PHP
PHP生成短网址方法汇总
Jul 12 PHP
php判断手机浏览还是web浏览,并执行相应的动作简单实例
Jul 28 PHP
PHP实现支付宝即时到账功能
Dec 21 PHP
Laravel构建即时应用的一种实现方法详解
Aug 31 PHP
PHP 实现人民币小写转换成大写的方法及大小写转换函数
Nov 17 PHP
ThinkPHP中获取指定日期后工作日的具体日期方法
Oct 14 PHP
Thinkphp5.0框架视图view的循环标签用法示例
Oct 12 PHP
laravel model模型处理之修改查询或修改字段时的类型格式案例
Oct 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
解析数组非数字键名引号的必要性
2013/08/09 PHP
PHP中redis的用法深入解析
2014/02/20 PHP
PHP定时执行任务实现方法详解(Timer)
2015/07/30 PHP
js程序中美元符号$是什么
2008/06/05 Javascript
JavaScript学习历程和心得小结
2010/08/16 Javascript
js里的prototype使用示例
2010/11/19 Javascript
『jQuery』.html(),.text()和.val()的概述及使用
2013/04/22 Javascript
ECMAScript 5中的属性描述符详解
2015/03/02 Javascript
jQuery判断元素上是否绑定了指定事件的方法
2015/03/17 Javascript
JS+HTML5手机开发之滚动和惯性缓动实现方法分析
2016/06/12 Javascript
JS上传图片预览插件制作(兼容到IE6)
2016/08/07 Javascript
Angular.js中$apply()和$digest()的深入理解
2016/10/13 Javascript
微信小程序 MINA文件结构
2016/10/17 Javascript
vue.js默认路由不加载linkActiveClass问题的解决方法
2017/12/11 Javascript
JS正则表达式常见用法实例详解
2018/06/19 Javascript
JS实现DOM节点插入操作之子节点与兄弟节点插入操作示例
2018/07/30 Javascript
Vue2实时监听表单变化的示例讲解
2018/08/30 Javascript
新手入门带你学习JavaScript引擎运行原理
2019/06/24 Javascript
解决vue项目本地启动时无法携带cookie的问题
2021/02/06 Vue.js
[11:42]2018DOTA2国际邀请赛寻真——OG卷土重来
2018/08/17 DOTA
python3学习笔记之多进程分布式小例子
2018/02/13 Python
Python中logging.NullHandler 的使用教程
2018/11/29 Python
浅谈Python 多进程默认不能共享全局变量的问题
2019/01/11 Python
浅谈python str.format与制表符\t关于中文对齐的细节问题
2019/01/14 Python
Python3模拟curl发送post请求操作示例
2019/05/03 Python
python自制包并用pip免提交到pypi仅安装到本机【推荐】
2019/06/03 Python
python的等深分箱实例
2019/11/22 Python
Python Pandas 转换unix时间戳方式
2019/12/07 Python
PyQt5中QSpinBox计数器的实现
2021/01/18 Python
香港最大的洋酒零售连锁店:屈臣氏酒窖(Watson’s Wine)
2018/12/10 全球购物
2014迎国庆标语大全
2014/09/19 职场文书
党员“四风”问题批评与自我批评思想汇报
2014/10/06 职场文书
初中运动会前导词
2015/07/20 职场文书
民警忠诚教育心得体会
2016/01/23 职场文书
优秀家长事迹材料(2016推荐版)
2016/02/29 职场文书
Java实现给Word文件添加文字水印
2022/02/15 Java/Android