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一些服务器端特性的配置加强php的安全
Oct 09 PHP
基于curl数据采集之单页面并行采集函数get_htmls的使用
Apr 28 PHP
一个php生成16位随机数的代码(两种方法)
Sep 16 PHP
PHP邮件发送类PHPMailer用法实例详解
Sep 22 PHP
PHP文件锁函数flock()详细介绍
Nov 18 PHP
php中Ctype函数用法详解
Dec 09 PHP
mac os快速切换多个PHP版本的方法
Mar 07 PHP
PHP实现随机生成水印图片功能
Mar 22 PHP
php删除数组指定元素实现代码
May 03 PHP
PHP生成腾讯云COS接口需要的请求签名
May 20 PHP
Yii2框架加载css和js文件的方法分析
May 25 PHP
laravel5.5添加echarts实现画图功能的方法
Oct 09 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实现多服务器共享SESSION数据的方法
2007/03/16 PHP
php动态实现表格跨行跨列实现代码
2012/11/06 PHP
通过dbi使用perl连接mysql数据库的方法
2014/04/16 PHP
PHP去除字符串最后一个字符的三种方法实例
2017/03/01 PHP
ExtJS扩展 垂直tabLayout实现代码
2009/06/21 Javascript
滚动条变色 隐藏滚动条与双击网页自动滚屏显示代码
2009/12/28 Javascript
AJAX分页的代码(后台asp.net)
2011/02/14 Javascript
基于jquery的3d效果实现代码
2011/03/23 Javascript
自动设置iframe大小的jQuery代码
2013/09/11 Javascript
js的toLowerCase方法用法实例
2015/01/27 Javascript
JS中完美兼容各大浏览器的scrolltop方法
2015/04/17 Javascript
jQuery菜单插件用法实例
2015/07/25 Javascript
JavaScript——DOM操作——Window.document对象详解
2016/07/14 Javascript
html5 canvas 详细使用教程
2017/01/20 Javascript
详解Vue一个案例引发「内容分发slot」的最全总结
2018/12/02 Javascript
vue配置font-awesome5的方法步骤
2019/01/27 Javascript
详解Js里的for…in和for…of的用法
2019/03/28 Javascript
JavaScript实现图片的放大缩小及拖拽功能示例
2019/05/14 Javascript
支付宝小程序实现省市区三级联动
2020/06/21 Javascript
vue使用exif获取图片旋转,压缩的示例代码
2020/12/11 Vue.js
uni-app 自定义底部导航栏的实现
2020/12/11 Javascript
Python编写百度贴吧的简单爬虫
2015/04/02 Python
Python中的map()函数和reduce()函数的用法
2015/04/27 Python
R vs. Python 数据分析中谁与争锋?
2017/10/18 Python
python连接数据库的方法
2017/10/19 Python
Python单元和文档测试实例详解
2019/04/11 Python
python批量下载抖音视频
2019/06/17 Python
python 缺失值处理的方法(Imputation)
2019/07/02 Python
详解Python图像处理库Pillow常用使用方法
2019/09/02 Python
Python 中pandas索引切片读取数据缺失数据处理问题
2019/10/09 Python
python对Excel的读取的示例代码
2020/02/14 Python
canvas绘图按照contain或者cover方式适配并居中显示
2019/02/18 HTML / CSS
幼儿园春季开学寄语
2014/04/03 职场文书
幼儿园保育员岗位职责
2014/04/13 职场文书
2014年教研员工作总结
2014/12/23 职场文书
高三数学教学反思
2016/02/18 职场文书