PHP解决JSON中文显示问题

*文
发布: 2017-12-26 13:46:33
原创
9857人浏览过

php如何解决json中文显示问题?本文主要介绍了php json格式的中文显示问题解决方法,本文总结了3种解决中文显示u开头字符问题的方法。希望对大家有所帮助。

返回json数据中文显示的问题

解决方法一:

<?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免费学习笔记(深入)”;

当使用php自带的json_encode对数据进行编码时,中文都会变成unicode,导致不可读。如:对字符串”厦门“进行json_encode后,输出的是"u53a6u95e8"。

Find JSON Path Online
Find JSON Path Online

Easily find JSON paths within JSON objects using our intuitive Json Path Finder

Find JSON Path Online 30
查看详情 Find JSON Path Online

查询了一下,有两种方法:
1.将"u53a6u95e8"还原成“厦门”,使用如下的代码:

$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("厦门"));
登录后复制

相关推荐:

ThinkPHP 乱码如何解决?

utf-8-PHP 乱码的顽症--部分乱码

php 中文编码小技巧你要知道?

以上就是PHP解决JSON中文显示问题的详细内容,更多请关注php中文网其它相关文章!

相关标签:
PHP速学教程(入门到精通)
PHP速学教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号