博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[转]php返回json数据中文显示的问题
阅读量:6201 次
发布时间:2019-06-21

本文共 1854 字,大约阅读时间需要 6 分钟。

转自 : 

解决方法:

 
[php] 
 
  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] 
 
  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后,输出的是"\u53a6\u95e8"。

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

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

 

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

 

 

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

 

[php] 
 
  1. $code = urldecode(json_encode(urlencode("厦门")));  

 

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

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

[php] 
 
  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("厦门"));  

转载地址:http://sftca.baihongyu.com/

你可能感兴趣的文章
Centos6.4 编译安装 nginx php
查看>>
前端和后端是如何交互的
查看>>
用postal.js在AngularJS中实现订阅发布消息
查看>>
Division
查看>>
20141022unity学习笔记
查看>>
爬取新闻列表
查看>>
NSIS打包软件(二)
查看>>
xss攻击和csrf攻击的定义及区别
查看>>
【AtCoder】ARC067 F - Yakiniku Restaurants 单调栈+矩阵差分
查看>>
【BZOJ】1690: [Usaco2007 Dec]奶牛的旅行
查看>>
【Codeforces】849D. Rooter's Song
查看>>
AVEVA PDMS Text Tool
查看>>
Java并发基础:线程的创建
查看>>
紫书第三章训练2 暴力集
查看>>
TOJ 2017: N-Credible Mazes
查看>>
移动端 上传头像 并裁剪功能(h5)
查看>>
asd短片数篇
查看>>
js 带遮罩层的弹出层
查看>>
checkpoint防火墙SmartDashboard登录出错
查看>>
mysq管理
查看>>