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_SELF的安全问题
Sep 05 PHP
深入理解PHP之require/include顺序 推荐
Jan 02 PHP
PHP 中检查或过滤IP地址的实现代码
Nov 27 PHP
PHP处理SQL脚本文件导入到MySQL的代码实例
Mar 17 PHP
PHP判断一个gif图片是否为动态图片的方法
Nov 19 PHP
typecho插件编写教程(四):插件挂载
May 28 PHP
php生成图片验证码-附五种验证码
Aug 19 PHP
php  PATH_SEPARATOR判断当前服务器系统类型实例
Oct 28 PHP
PHP convert_uudecode()函数讲解
Feb 14 PHP
Laravel 自定命令以及生成文件的例子
Oct 23 PHP
Laravel 微信小程序后端搭建步骤详解
Nov 26 PHP
php的单例模式及应用场景详解
Feb 27 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
用Socket发送电子邮件(利用需要验证的SMTP服务器)
2006/10/09 PHP
用php+javascript实现二级级联菜单的制作
2008/05/06 PHP
php中批量删除Mysql中相同前缀的数据表的代码
2011/07/01 PHP
PHP中Memcache操作类及用法实例
2014/12/12 PHP
PHP htmlspecialchars()函数用法与实例讲解
2019/03/08 PHP
YII2框架中使用RBAC对模块,控制器,方法的权限控制及规则的使用示例
2020/03/18 PHP
JavaScript Ajax Json实现上下级下拉框联动效果实例代码
2013/11/23 Javascript
jquery选择符快速提取web表单数据示例
2014/03/27 Javascript
对之前写的jquery分页做下升级
2014/06/19 Javascript
Javascript中实现trim()函数的两种方法
2015/02/04 Javascript
适用于javascript开发者的Processing.js入门教程
2016/02/24 Javascript
Vuejs第七篇之Vuejs过渡动画案例全面解析
2016/09/05 Javascript
Bootstrap Modal遮罩弹出层(完整版)
2016/11/21 Javascript
用jQuery将JavaScript对象转换为querystring查询字符串的方法
2018/11/12 jQuery
JS执行控制之节流模式实例分析
2018/12/21 Javascript
一个因@click.stop引发的bug的解决
2019/01/08 Javascript
React+TypeScript+webpack4多入口配置详解
2019/08/08 Javascript
解决Vue watch里调用方法的坑
2020/11/07 Javascript
[02:34]DOTA2亚洲邀请赛 BG战队出场宣传片
2015/03/09 DOTA
[42:32]VP vs RNG 2019国际邀请赛淘汰赛 败者组 BO3 第一场 8.21.mp4
2020/07/19 DOTA
Python3实现的腾讯微博自动发帖小工具
2013/11/11 Python
python BeautifulSoup设置页面编码的方法
2015/04/03 Python
Python中列表、字典、元组数据结构的简单学习笔记
2016/03/20 Python
机器学习python实战之手写数字识别
2017/11/01 Python
python验证码识别教程之滑动验证码
2018/06/04 Python
用Python将结果保存为xlsx的方法
2019/01/28 Python
Python计算矩阵的和积的实例详解
2020/09/10 Python
【魔兽争霸3重制版】原版画面与淬火MOD画面对比
2021/03/26 魔兽争霸
文明村创建实施方案
2014/03/27 职场文书
三好学生演讲稿范文
2014/04/26 职场文书
长江三峡导游词
2015/01/31 职场文书
清洁员岗位职责
2015/02/15 职场文书
导游词之峨眉乐山/兵马俑/北京故宫御花园
2019/09/03 职场文书
springboot+WebMagic+MyBatis爬虫框架的使用
2021/08/07 Java/Android
教你部署vue项目到docker
2022/04/05 Vue.js
电脑只能进入安全模式无法正常启动的解决办法
2022/04/08 数码科技