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中冒号、endif、endwhile、endfor使用介绍
Apr 28 PHP
解析PHP 使用curl提交json格式数据
Jun 29 PHP
如何使用FireFox插件FirePHP调试PHP
Jul 23 PHP
windows下PHP_intl.dll正确配置方法(apache2.2+php5.3.5)
Jan 14 PHP
ThinkPHP单字母函数(快捷方法)使用总结
Jul 23 PHP
PHP+Mysql基于事务处理实现转账功能的方法
Jul 08 PHP
php实现异步数据调用的方法
Dec 24 PHP
php pdo oracle中文乱码的快速解决方法
May 16 PHP
PHP上传图片类显示缩略图功能
Jun 30 PHP
PHP实现的最大正向匹配算法示例
Dec 19 PHP
浅谈laravel-admin form中的数据,在提交后,保存前,获取并进行编辑
Oct 21 PHP
通过PHP的Wrapper无缝迁移原有项目到新服务的实现方法
Apr 02 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
2019年漫画销量排行榜:鬼灭登顶 海贼单卷制霸 尾田盛赞鬼灭
2020/03/08 日漫
?繁体转换的class
2006/10/09 PHP
php 批量替换html标签的实例代码
2013/11/26 PHP
php连接odbc数据源并保存与查询数据的方法
2014/12/24 PHP
php自动加载方式集合
2016/04/04 PHP
yii的入口文件index.php中为什么会有这两句
2016/08/04 PHP
PHP7匿名类用法分析
2016/09/26 PHP
php使用preg_match()函数验证ip地址的方法
2017/01/07 PHP
使用laravel的migrate创建数据表的方法
2019/09/30 PHP
jQuery(非HTML5)可编辑表格实现代码
2012/12/11 Javascript
JQuery实现表格动态增加行并对新行添加事件
2014/07/30 Javascript
JavaScript中的splice()方法使用详解
2015/06/09 Javascript
深入理解JavaScript的React框架的原理
2015/07/02 Javascript
jquery实现网站列表切换效果的2种方法
2016/08/12 Javascript
超级简易的JS计算器实例讲解(实现加减乘除)
2017/08/08 Javascript
浅谈关于iview表单验证的问题
2018/09/29 Javascript
vue-router命名路由和编程式路由传参讲解
2019/01/19 Javascript
跟老齐学Python之坑爹的字符编码
2014/09/28 Python
简单的Python的curses库使用教程
2015/04/11 Python
python如何实现从视频中提取每秒图片
2020/10/22 Python
Python numpy数组转置与轴变换
2019/11/15 Python
打包PyQt5应用时的注意事项
2020/02/14 Python
Python使用sqlite3模块内置数据库
2020/05/07 Python
python 密码学示例——理解哈希(Hash)算法
2020/09/21 Python
pytorch下的unsqueeze和squeeze的用法说明
2021/02/06 Python
上海奥佳笔试题面试题
2016/11/16 面试题
自我鉴定范文
2013/11/10 职场文书
马智宇婚礼主持词
2014/03/22 职场文书
党员公开承诺践诺书
2014/03/25 职场文书
计划生育证明书写要求
2014/09/17 职场文书
小学“向国旗敬礼”网上签名寄语活动总结
2014/09/27 职场文书
工厂标语大全
2014/10/06 职场文书
“爱眼护眼,提前预防近视”倡议书3篇
2019/10/30 职场文书
mysql在项目中怎么选事务隔离级别
2021/05/25 MySQL
vue点击弹窗自动触发点击事件的解决办法(模拟场景)
2021/05/25 Vue.js
详解Go语言中Get/Post请求测试
2022/06/01 Golang