源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

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

  • 时间:2020-10-06 09:06 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:PHP JSON格式的中文显示问题解决方法
返回json数据中文显示的问题 上一篇文章中,返回json格式的中文显示成\u5723\u8bde\u8282\u5343\u4e07\u597d\u793c\u5927\u5949\u9001 [b]解决方法一: [/b]
[u]复制代码[/u] 代码如下:
<?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);     } ?>
[b]另外从网上搜索到的其他方法 [/b]
[u]复制代码[/u] 代码如下:
<?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);     } } ?>
[b]这是从网上搜索得到的又一篇相关文章[/b] 当使用php自带的json_encode对数据进行编码时,中文都会变成unicode,导致不可读。如:对字符串”厦门“进行json_encode后,输出的是"\u53a6\u95e8"。 查询了一下,有两种方法: 1.将"\u53a6\u95e8"还原成“厦门”,使用如下的代码:
[u]复制代码[/u] 代码如下:
$str= preg_replace("#\\\u([0-9a-f]+)#ie", "iconv('UCS-2', 'UTF-8', pack('H4', '\\1'))", $str);
2.先将中文字段urlencode,json_encode后,再用urldecode,也可以显示中文。
[u]复制代码[/u] 代码如下:
$code = urldecode(json_encode(urlencode("厦门")));
PHP5.4版本,已经给Json新增了一个选项: JSON_UNESCAPED_UNICODE。加上这个选项后,就不会自动把中文编码了。
[u]复制代码[/u] 代码如下:
echo json_encode("厦门", JSON_UNESCAPED_UNICODE);
另,由于 json_encode 和 json_decode只支持utf-8编码的字符,GBK的字符要用json就得转换一下,附自己写的GBK转UTF-8的代码:
[u]复制代码[/u] 代码如下:
/*     字符串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)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部