全球主机交流论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

CeraNetworks网络延迟测速工具IP归属甄别会员请立即修改密码
12
返回列表 发新帖
楼主: Mr.Ra1n
打印 上一主题 下一主题

技术牛进,PHP取UNICODE编码的JSON中的中文

[复制链接]
11#
 楼主| 发表于 2012-12-14 15:37:22 | 只看该作者
本帖最后由 Mr.Ra1n 于 2012-12-14 15:40 编辑
Comcast 发表于 2012-12-14 15:00
表示无压力,怎么感觉你们是反向。还原json为数组。我遇到中文变成null或者\u3932 这种 是 数组转json才 ...
  1.                         <?php               
  2.                                 function unicode2utf8($str){
  3.                                                 if(!$str) return $str;
  4.                                                 $decode = json_decode($str);
  5.                                                 if($decode) return $decode;
  6.                                                 $str = '["' . $str . '"]';
  7.                                                 $decode = json_decode($str);
  8.                                                 if(count($decode) == 1){
  9.                                                                 return $decode[0];
  10.                                                 }
  11.                                                 return $str;
  12.                                 }
  13.                                 $json = "http://www.youdao.com/smartresult-xml/search.s?jsFlag=true&type=mobile&q=13760191994";
  14.                                 $json = unicode2utf8($json);
  15.                                 $json = json_decode($json,true);
  16.                                 echo $json['location'];
  17.                          ?>
复制代码
结果为空。
12#
发表于 2012-12-14 15:38:08 | 只看该作者
\uxxxx不是UTF-8,是Unicode……
13#
发表于 2012-12-14 17:15:54 | 只看该作者
本帖最后由 Zeraba 于 2012-12-14 17:18 编辑

updateCall(1, {'product':'mobile','phonenum':'13760191994','location':'广东 深圳'} , '');
这个格式不符合json规范的样子 也许应该替换下 让格式符合json
做json_decode处理的时候 数据就丢了
  1. <?php
  2. $a = '
  3. {
  4.     "product": "mobile",
  5.     "phonenum": "13760191994",
  6.     "location": "广东深圳"
  7. }
  8. ';

  9. $b = json_decode(stripslashes($a),true);

  10. echo $b[location];
  11. ?>
复制代码
大概是这样的
14#
发表于 2012-12-14 17:18:19 | 只看该作者
Zeraba 发表于 2012-12-14 17:15
updateCall(1, {'product':'mobile','phonenum':'13760191994','location':'广东 深圳'} , '');
这个格式不 ...

楼主问题复杂化了又是UTF8又是unicode 的

直接写个正则匹配取出 {'product':'mobile','phonenum':'13760191994','location':'广东 深圳'} 这部分json

然后decode出来  数组直接echo就行了。 还什么UTF-8  unicode的。刚试了一下就这么简单。
15#
发表于 2012-12-14 17:19:55 | 只看该作者
Comcast 发表于 2012-12-14 17:18
楼主问题复杂化了又是UTF8又是unicode 的

直接写个正则匹配取出 {'product':'mobile','phonenum':'1376 ...

嗯 正则拔出来也很方便 有关键字
16#
发表于 2012-12-14 17:20:03 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
17#
发表于 2012-12-14 18:08:36 | 只看该作者
  1. $obj=new stdClass;
  2. $obj->product='mobile';
  3. $obj->phonenum='13700000000';
  4. $obj->location='广东 深圳';

  5. $jsonStr=json_encode($obj);
  6. echo $jsonStr;

  7. $_obj=json_decode(mb_convert_encoding($jsonStr,'UTF-8',mb_detect_encoding($jsonStr)));
  8. echo '<pre>';
  9. print_r($_obj);
复制代码
18#
发表于 2012-12-14 18:09:49 | 只看该作者
eslizn 发表于 2012-12-14 18:08

需要Multibyte String支持,不过现在基本上空间商都支持
19#
发表于 2012-12-14 18:53:33 | 只看该作者
楼主出来给分
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|全球主机交流论坛

GMT+8, 2024-5-26 21:36 , Processed in 0.060791 second(s), 7 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表