当前位置:首页 > PHP教程 > php应用 > 列表

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

发布:smiling 来源: PHP粉丝网  添加日期:2021-05-22 13:49:14 浏览: 评论:0 

这篇文章主要介绍了PHP JSON格式的中文显示问题解决方法,本文总结了3种解决中文显示\u开头字符问题的方法,需要的朋友可以参考下

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

上一篇文章中,返回json格式的中文显示成\u5723\u8bde\u8282\u5343\u4e07\u597d\u793c\u5927\u5949\u9001

解决方法一:

  1. <?php 
  2. function Notice(){ 
  3.     include './include/conn.php';  //数据库链接文件 
  4.     $sql_notice = mysql_query('SELECT * FROM gg_notice where enable = "1" limit 0,10'); 
  5.     $notice = mysql_fetch_array($sql_notice, MYSQL_ASSOC); 
  6.     $str = json_encode($notice); 
  7.     //linux 
  8.     return preg_replace("#\\\u([0-9a-f]{4})#ie""iconv('UCS-2BE', 'UTF-8', pack('H4', '\\1'))"$str); 
  9.     //windows 
  10.     //return preg_replace("#\\\u([0-9a-f]{4})#ie", "iconv('UCS-2LE', 'UTF-8', pack('H4', '\\1'))", $str); 
  11.     
  12. ?> 

另外从网上搜索到的其他方法:

  1. <?php 
  2. /** 
  3.  * json 生成,分析 支持中文 
  4.  */ 
  5. class Json_Helper { 
  6.     /** 
  7.      * 生成json 
  8.      */ 
  9.     public static function encode($str){ 
  10.         $json = json_encode($str); 
  11.         //linux 
  12.         return preg_replace("#\\\u([0-9a-f]{4})#ie""iconv('UCS-2BE', 'UTF-8', pack('H4', '\\1'))"$json); 
  13.         //windows 
  14.         //return preg_replace("#\\\u([0-9a-f]{4})#ie", "iconv('UCS-2LE', 'UTF-8', pack('H4', '\\1'))", $json); 
  15.     } 
  16.     /** 
  17.      * 分析json 
  18.      */ 
  19.     public static function decode($str) { 
  20.         return json_decode($str); 
  21.     } 
  22. ?> 

这是从网上搜索得到的又一篇相关文章

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

查询了一下,有两种方法:

1.将"\u53a6\u95e8"还原成“厦门”,使用如下的代码:

  1. $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的代码:

  1. /* 
  2.     字符串GBK转码为UTF-8,数字转换为数字。 
  3. */ 
  4. function ct2($s){ 
  5.     if(is_numeric($s)) { 
  6.         return intval($s); 
  7.     } else { 
  8.         return iconv("GBK","UTF-8",$s); 
  9.     } 
  10. /* 
  11.     批量处理gbk->utf-8 
  12. */ 
  13. function icon_to_utf8($s) { 
  14.   if(is_array($s)) { 
  15.     foreach($s as $key => $val) { 
  16.       $s[$key] = icon_to_utf8($val); 
  17.     } 
  18.   } else { 
  19.       $s = ct2($s); 
  20.   } 
  21.   return $s
  22.  
  23. echo json_encode(icon_to_utf8("厦门")); 

Tags: JSON PHP中文显示

分享到: