php专区

 首页 > php专区 > PHP应用 > php函数大全 > php 中解决json中文乱码的函数 - php函数

php 中解决json中文乱码的函数 - php函数

分享到:
【字体:
导读:
          php自带了json_encode来处理json数据,那么它们对中文的支持不好,下面我们来看个实例:echo json_encode(array(123213, 中文 ));...

php 中解决json中文乱码的函数

php自带了json_encode来处理json数据,那么它们对中文的支持不好,下面我们来看个实例:

echo json_encode(array(123213,'中文'));

{"platformid":"123213","userid":"1023","username":"u00b7u00f0u00b5u00b2u00c9u00b1u00b7u00f0u00ccu00fc"}

我们会发现,英文可以正确解析,但中文就出来:

u00b7u00f0u00b5u00b2u00c9u00b1u00b7u00f0u00ccu00fc,这可能是unicode编码,但我没测试过只是自己猜的。下面我们来看一款解决json中文乱码的函数

  1. private function to_utf8($in)  
  2. {  
  3. if (is_array($in)) {  
  4. foreach ($in as $key => $value)  
  5. {  
  6. $out[$this->to_utf8($key)] = $this->to_utf8($value);  
  7. }  
  8. }  
  9. elseif(is_string($in))  
  10. {  
  11. if(mb_detect_encoding()($in) != "utf-8")  
  12. return utf8_encode($in);  
  13. else  
  14. return $in;  
  15. }  
  16. else  
  17. {  
  18. return $in;  
  19. }  
  20. return $out;  

1.把$usr->username直接输出,页面头设置charset=utf-8.乱码 

2.echo json_encode($usr)输出username=null 

3.页面头设置为charset=gbk,输出正确->可以确定原编码为gbk 

最后通过ie,chrome,firefox测试得出结论:

1.保证页面字符集与数据库一致,输出一定正常.

2.做json_encode时保证数据编码是utf-8,json_decode正常.

3.如果要对非utf-8字符做json_encode,先转换成utf-8.

4.对非utf-8字符做json_decode的时候,千万不能忘记转换成原先的编码,否则会输出乱码!

分享到:
php文件调用与包含几个函数include_once(...
php文件调用与包含几个函数include_once() require_once()include()requir require() 语句包括并运行指定文件,有关包括如何工作的详细信息见 include() 的文档。 require() 和 include() 除了怎样处理失败之外在各方面都完全一样。 include() 产生一个警告而 require() 则导致一个致命错误...
php file_exists无效解决办法 - php函数
php file_exists无效解决办法 方法1:据官方手册上描述若php的safe mode相关的设置过于苛刻,就会出现这样的情形:尽管文件真实存在也被误报,认为文件不存在。  由于服务器端的php.ini我们无法操纵,当用ini_set()也关闭不了safe mode模式,我们只有退而求其次,找一个更可靠、安全的检测...
  •         php迷,一个php技术的分享社区,专属您自己的技术摘抄本、收藏夹。
  • 在这里……