zoukankan      html  css  js  c++  java
  • [转]php返回json数据中文显示的问题

    转自 : http://blog.csdn.net/superbirds/article/details/8091910

    解决方法:

     
    [php] view plaincopy
     
    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. }  
    13. ?>  

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

     
    [php] view plaincopy
     
    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.     /** 
    18.      * 分析json 
    19.      */  
    20.     public static function decode($str) {  
    21.         return json_decode($str);  
    22.     }  
    23. }  
    24. ?>  

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

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

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

    [php] view plaincopy
     
    1. $str= preg_replace("#\u([0-9a-f]+)#ie", "iconv('UCS-2', 'UTF-8', pack('H4', '\1'))", $str);  
     

    2.先将中文字段urlencode,json_encode后,再用urldecode,也可以显示中文。

    [php] view plaincopy
     
    1. $code = urldecode(json_encode(urlencode("厦门")));  
    PHP5.4版本,已经给Json新增了一个选项: JSON_UNESCAPED_UNICODE。加上这个选项后,就不会自动把中文编码了。
    [php] view plaincopy
     
    1. echo json_encode("厦门", JSON_UNESCAPED_UNICODE);  

     

    另,由于 json_encode 和 json_decode只支持utf-8编码的字符,GBK的字符要用json就得转换一下,附自己写的GBK转UTF-8的代码:

    [php] view plaincopy
     
    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. /* 
    12.     批量处理gbk->utf-8 
    13. */  
    14. function icon_to_utf8($s) {  
    15.   
    16.   if(is_array($s)) {  
    17.     foreach($s as $key => $val) {  
    18.       $s[$key] = icon_to_utf8($val);  
    19.     }  
    20.   } else {  
    21.       $s = ct2($s);  
    22.   }  
    23.   return $s;  
    24.   
    25. }  
    26.   
    27. echo json_encode(icon_to_utf8("厦门"));  
  • 相关阅读:
    【整理】PHP获取客户端真实IP地址详解
    配置百度编辑器变成纯代码编辑器
    Notepad++安装SVN插件
    【CodeBase】【转】php随机生成汉字
    【CodeBase】PHP打印所有用户自定义常量
    php5.3新垃圾回收机制详解
    php脚本cli 模式运行
    php 内存分配新
    php-fpm epoll封装
    火焰图定位dbproxy问题
  • 原文地址:https://www.cnblogs.com/Athrun/p/4779343.html
Copyright © 2011-2022 走看看