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
PHP 数组教程 定义数组
Oct 23 PHP
应用开发中涉及到的css和php笔记分享
Aug 02 PHP
$_GET['goods_id']+0 的使用详解
Jun 06 PHP
PHP设计模式之责任链模式的深入解析
Jun 13 PHP
destoon实现调用图文新闻的方法
Aug 21 PHP
html静态页面调用php文件的方法
Nov 13 PHP
php字符串函数学习之substr()
Mar 27 PHP
PHP性能分析工具XHProf安装使用教程
May 13 PHP
PHP mysqli事务操作常用方法分析
Jul 22 PHP
php实现微信支付之退款功能
May 30 PHP
PHP实现考试倒计时功能代码
Apr 16 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
实例讲解PHP表单验证功能
2019/02/15 PHP
让焦点自动跳转
2006/07/01 Javascript
jQuery旋转插件—rotate支持(ie/Firefox/SafariOpera/Chrome)
2013/01/16 Javascript
关于extjs treepanel复选框选中父节点与子节点的问题
2013/04/02 Javascript
JS实现静止元素自动移动示例
2014/04/14 Javascript
jQuery实现输入框下拉列表树插件特效代码分享
2015/08/27 Javascript
javascript实现2016新年版日历
2016/01/25 Javascript
修复jQuery tablesorter无法正确排序的bug(加千分位数字后)
2016/03/30 Javascript
JQuery中解决重复动画的方法
2016/10/17 Javascript
vue仿淘宝订单状态的tab切换效果
2020/06/23 Javascript
javascript原型链学习记录之继承实现方式分析
2019/05/01 Javascript
vue如何限制只能输入正负数及小数
2019/07/04 Javascript
微信小程序wx.navigateTo方法里的events参数使用详情及场景
2020/01/07 Javascript
js实现点赞效果
2020/03/16 Javascript
JavaScript闭包原理与用法学习笔记
2020/05/29 Javascript
详解webpack的文件监听实现(热更新)
2020/09/11 Javascript
python3.3实现乘法表示例
2014/02/07 Python
Python模拟三级菜单效果
2017/09/11 Python
Python批量提取PDF文件中文本的脚本
2018/03/14 Python
Python自动抢红包教程详解
2019/06/11 Python
django 数据库连接模块解析及简单长连接改造方法
2019/08/29 Python
基于python3.7利用Motor来异步读写Mongodb提高效率(推荐)
2020/04/29 Python
Win10用vscode打开anaconda环境中的python出错问题的解决
2020/05/25 Python
pygame用blit()实现动画效果的示例代码
2020/05/28 Python
详解python tkinter 图片插入问题
2020/09/03 Python
Banggood官网:面向全球客户的综合商城
2017/04/19 全球购物
英国布鲁姆精品店:Bloom Boutique
2018/03/01 全球购物
施华洛世奇西班牙官网:SWAROVSKI西班牙
2019/06/06 全球购物
俄罗斯珠宝市场的领导者之一:Бронницкий ювелир
2019/10/02 全球购物
随机分配座位,共50个学生,使学号相邻的同学座位不能相邻
2014/01/18 面试题
市场营销职业生涯规划书范文
2014/01/12 职场文书
聘用意向书范本
2014/04/01 职场文书
上班迟到检讨书
2014/09/15 职场文书
react中的DOM操作实现
2021/06/30 Javascript
windows server 2016 域环境搭建的方法步骤(图文)
2022/06/25 Servers
SpringBoot项目部署到阿里云服务器的实现步骤
2022/06/28 Java/Android