PHP JSON格式的中文显示问题解决方法

返回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("厦门"));

(0)

相关推荐

  • PHP中使用json数据格式定义字面量对象的方法

    PHPer都知道PHP是不支持字面量了,至少目前版本都不支持.比如,在JS中可以这样定义object 复制代码 代码如下: var o = { 'name' : 'qttc' , 'url' : 'www.jb51.net' }; alert(o.name); Python中定义字典,也可以这样定义: 复制代码 代码如下: o = { 'name' : 'qttc' , 'url' : 'www.jb51.net' } print o['name'] 但在PHP中这么定义object: 复制代码

  • PHP的serialize序列化数据以及JSON格式化数据分析

    PHP的serialize是将变量序列化,返回一个具有变量类型和结构的字符串表达式,而JSON则是一种更轻.更友好的用于接口(AJAX.REST等)数据交换的格式. 其实两者都是以一种字符串的方式来体现一种数据结构.那么他们之间又有什么区别呢? serialize序列化 我们在一些老的WEB系统中可能会看到在数据库或在文本文件中存储着一大串貌似有着特殊含义的字符串文本内容.我们仔细看会发现它具有数据类型和结构等信息,但是它并不容易人工阅读,它只适合PHP程序读取.PHP的serialize将数组

  • PHP生成json和xml类型接口数据格式

    php生成接口通信数据 /** * 生成接口数据格式 */ class Response{ /** * [show 按综合方式输出数据] * @param [int] $code [状态码] * @param [string] $message [提示信息] * @param array $data [数据] * @param [string] $type [类型] * @return [string] [返回值] */ public static function show($code, $m

  • 解析PHP 使用curl提交json格式数据

    复制代码 代码如下: $data = array("name" => "Hagrid", "age" => "36");$data_string = json_encode($data); $ch = curl_init('http://api.local/rest/users');curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");curl_seto

  • PHP中把数据库查询结果输出为json格式简单实例

    include/conn.php为数据库链接文件,不会的网上搜索 <?php 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); print_r ($notice); ?>

  • PHP数据集构建JSON格式及新数组的方法

    自己写了个PHP结果集转换成JSON格式的函数,可以直接调用: 复制代码 代码如下: function RecordToJson($recordset) { $jstr='['; while($rs = $recordset->Fetch()) { //$nick = iconv("GBK",'utf-8',$rs['nick']);/*转换为utf-8编码*/ //TODO:遍历结果集 $arr_keys=array_keys($rs); $jstr=$jstr.'{'; fo

  • PHP判断json格式是否正确的实现代码

    废话不多说了,直接给大家贴代码了,具体代码如下所示: <?php $GLOBALS['count'] = 0; //校验data或者content的json格式是否有错误 function data($value) { if (isset($value['data'])) { $value['data'] = json_decode($value['data'], true); } else if (isset($value['content'])) { $value['content'] =

  • php数组转成json格式的方法

    本文实例讲述了php数组转成json格式的方法.分享给大家供大家参考.具体实现方法如下: 复制代码 代码如下: function array_to_json( $array ){     if( !is_array( $array ) ){         return false;     }     $associative = count( array_diff( array_keys($array), array_keys( array_keys( $array )) ));     i

  • php判断是否为json格式的方法

    首先要记住json_encode返回的是字符串, 而json_decode返回的是对象 判断数据不是JSON格式: 复制代码 代码如下: function is_not_json($str){      return is_null(json_decode($str)); } 判断数据是合法的json数据: (PHP版本大于5.3) 复制代码 代码如下: function is_json($string) { www.jb51.net  json_decode($string);  return

  • PHP JSON格式的中文显示问题解决方法

    返回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 ena

  • Flask 让jsonify返回的json串支持中文显示的方法

    用flask时遇到了返回字符串支持中文显示的问题,在web端显示的是utf-8的编码,而不是中文,如下图. 虽然不影响接口的读取,但是可读性太差,于是研究了一下怎么直接显示成中文.最后找到了解决方案如下,在配置中加入下面一行代码就OK了. app.config['JSON_AS_ASCII'] = False json.dumps()解决同样的问题可以加入ensure_ascii=False 参考资料: http://stackoverflow.com/questions/37531067/py

  • Python实现的json文件读取及中文乱码显示问题解决方法

    本文实例讲述了Python实现的json文件读取及中文乱码显示问题解决方法.分享给大家供大家参考,具体如下: city.json文件的内容如下: { "cities": [ { "city": "北京", "cityid": "101010100" }, { "city": "上海", "cityid": "101020100"

  • json格式的时间显示为正常年月日的方法

    json格式的时间显示为:/Date(1377828670436)/需要转换为正常年月日,方法如下: 复制代码 代码如下: //通过序列化转换出来的json,如果里面有DateTime格式的,就不会正常显示时间,用下面的方法就可以了 var date=renderTime(json.AddDateTime); //把读出来的json格式时间传入这个方法内 function renderTime(date){ var da = new Date(parseInt(date.replace("/Da

  • Python读写Json涉及到中文的处理方法

    今天在帮前端准备数据的时候,需要把数据格式转成json格式,说实话,涉及到中文有时候真的是很蛋疼,除非对Python的编码规则比较了解,不然处理起来真的很蛋疼. 整个逻辑 我们需要处理的是把一些文章处理,生成多个html文件,然后用json来显示文章的列表,图片,摘要和标题. 思路 为了以后的数据扩展,那必须有一个数据库,我的想法就是自己写一个简单的网页做为提交输入,然后post到后台以后录入到数据库中,再写一个展示文章的页面,展示效果正确后,写一个requests动态的把所有的数据都爬下来生成

  • JSP出现中文乱码问题解决方法详解

    在介绍方法之前我们首先应该清楚具体的问题有哪些,笔者在本博客当中论述的JSP中文乱码问题有如下几个方面:页面乱码.参数乱码.表单乱码.源文件乱码.下面来逐一解决其中的乱码问题. 一.JSP页面中文乱码 在JSP页面中,中文显示乱码有两种情况:一种是HTML中的中文乱码,另一种是在JSP中动态输出的中文乱码. 先看一个JSP程序: <%@ page language="java" import="java.util.*" %> <html> &

  • 跨浏览器PHP下载文件名中的中文乱码问题解决方法

    本文实例讲述了跨浏览器PHP下载文件名中的中文乱码问题解决方法.分享给大家供大家参考.具体如下: 复制代码 代码如下: <?php $ua = $_SERVER["HTTP_USER_AGENT"]; $filename = "中文 文件名.txt"; $encoded_filename = urlencode($filename); $encoded_filename = str_replace("+", "%20",

  • PHP中使用file_get_contents抓取网页中文乱码问题解决方法

    本文实例讲述了PHP中使用file_get_contents抓取网页中文乱码问题解决方法.分享给大家供大家参考.具体方法如下: file_get_contents函数本来就是一个非常优秀的php自带本地与远程文件操作函数,它可以让我们不花吹挥之力把远程数据直接下载,但我在使用它读取网页时会碰到有些页面是乱码了,这里就来给各位总结具体的解决办法. 根据网上有朋友介绍说原因可能是服务器开了GZIP压缩,下面是用firebug查看我的网站的头信息,Gzip是开了的,请求头信息原始头信息,代码如下: 复

  • PHP基于curl post实现发送url及相关中文乱码问题解决方法

    本文实例讲述了PHP基于curl post实现发送url及相关中文乱码问题解决方法.分享给大家供大家参考,具体如下: 这个问题困扰我几天了,发送的指定网址的url参数,中文总是乱码,指定网址是utf8编码的,我发送的也是utf8编码的.但是还是乱码,开始用的file_get_contents,后来换成curl并在php.ini中开启了php_curl,还是不行,又加了header终于解决.代码如下: $url = 'http://'; //调用接口的平台服务地址 $post_string = a

  • 把django中admin后台界面的英文修改为中文显示的方法

    创建一个django工程,我使用的django 1.8.2,创建工程后,settings.py中设置中文显示支持定义 LANGUAGE_CODE = 'en-us'#改为zh-Hans 如果改为zh-cn则会报错 报错提示 django IOError: No translation files found for default language zh-cn 即找不到zh-cn对应的本地化文件.一般而言,zh-cn编码对应的本地化文件夹为zh_CN,我去django的安装目录查找zh_CN,结

随机推荐