Chinaunix

标题: 【求助】我用淘宝API得到的 unicode码怎么转化成中文? [打印本页]

作者: alexkh    时间: 2013-03-07 21:53
标题: 【求助】我用淘宝API得到的 unicode码怎么转化成中文?
本帖最后由 alexkh 于 2013-03-07 21:58 编辑

求助,我用淘宝API得到的 unicode码怎么转化成中文???
地址如下:http://ip.taobao.com/service/getIpInfo.php?ip=117.79.153.62

我是用re匹配到了里面的\u5317\u4eac\u5e02,但就是转不了中文

作者: jeppeter    时间: 2013-03-07 22:34
本帖最后由 jeppeter 于 2013-03-07 23:05 编辑

回复 1# alexkh


    你说的这三个字是“北京市”,这个是从UNICODE的表中查到的。你可以看CJK字符集这当中提到的。

给你转换的代码
  1. import codecs

  2. def ChangeUtf16ToGBK(u):
  3.         u16c = codecs.lookup('utf-16')
  4.         gbc = codecs.lookup('gbk')
  5.         uc = u16c.decode(u)
  6.         gc = gbc.encode(uc[0])
  7.         return gc[0]

  8. u = '\x17\x53\xac\x4e\x02\x5e'
  9. print ChangeUtf16ToGBK(u)

复制代码

作者: crifan    时间: 2013-03-07 23:51
本帖最后由 crifan 于 2013-03-07 23:53 编辑

简答:
用python里面的
  1. decodedUni = yourStr.decode("unicode-escape")
复制代码
即可转换为unicode。

详解:
其实你需要了解很多东西才可以真正理解这些。

字符编码方面的:
字符编码详解
以及python中的字符串:
【整理】Python中字符编码的总结和对比:Python 2.x的str和unicode vs Python 3.x的bytes和str


其实,早就写好了教程了,里面有所有的相关内容。
感兴趣的自己去看:
1. python初级教程:入门详解

2. python中级教程:开发总结
中就有:
第 4 章 Python中的字符串和编码

相关旧帖




作者: ghostwwl    时间: 2013-03-08 08:49
一看你那个就是 json的接口代码

  1. >>> import simplejson
  2. >>> import urllib
  3. >>> a = urllib.urlopen('http://ip.taobao.com/service/getIpInfo.php?ip=117.79.153.62').read()
  4. >>> b = simplejson.loads(a)
  5. >>> print b
  6. {'code': 0, 'data': {'ip': '117.79.153.62', 'city': u'\u5317\u4eac\u5e02', 'area_id': '100000', 'region_id': '110000', 'area': u'\u534e\u5317', 'city_id': '110000', 'country': u'\u4e2d\u56fd', 'region': u'\u5317\u4eac\u5e02', 'isp': '', 'country_id': 'CN', 'county': '', 'isp_id': '-1', 'county_id': '-1'}}
  7. >>> print b['data']['city'].encode('gbk')
  8. 北京市

复制代码

作者: ghostwwl    时间: 2013-03-08 08:55
本帖最后由 ghostwwl 于 2013-03-08 08:56 编辑

如果你不想用json库 也是可以的

  1. >>> def decode_keyword(k):
  2. >>>         s = ''
  3. >>>         if '\u' in k:
  4. >>>             for i in k.split('\u'):
  5. >>>                 if i: s += unichr(int(i.strip(), 16))
  6. >>>             return s
  7. >>>         else: return k
  8.    
  9. >>> b = decode_keyword(a)
  10. >>> print b
  11. 北京市
复制代码

作者: ssfjhh    时间: 2013-03-08 09:52
回复 3# crifan


学习态度令我非常佩服,所有问题都记录在案。

再看看自己,找到教程就记到脑子里,忘了再google教程。
自惭形秽呀。

   
作者: crifan    时间: 2013-03-08 14:09
如果是要处理json,如下供参考:
【整理】什么是JSON+如何处理JSON字符串

python方面的:
【已解决】用BeautifulSoup解析Html格式的Json字符串
【经验记录】Python中json.loads的时候出错->要注意要解码的Json字符的编码
【已解决】Python中json.loads解析包含\n的字符串会出错
【已解决】Python中使用json.loads解码字符串时出错:ValueError: Expecting property name: line 1 column 1 (char 1)
【已解决】Python中用json.loads解码字符串出错:ValueError: No JSON object could be decoded
作者: alexkh    时间: 2013-03-08 14:53
回复 7# crifan

多谢,编码问题和json问题通过你的资料学到了不少!


   
作者: alexkh    时间: 2013-03-08 14:54
回复 4# ghostwwl


    多谢,学到了一个好用的json库。另外看了你的百度空间,你是做搜索引擎的?
作者: crifan    时间: 2013-03-08 15:28
本帖最后由 crifan 于 2013-03-08 15:30 编辑

回复 9# alexkh
不是。
是做软件,嵌入式软件。
只是个人兴趣使然,现在上层软件,也折腾。

另:
百度空间,我有多个。况且,现在都已废弃不用。
你看的是哪个?

   
作者: xiyue_gwb    时间: 2013-04-17 11:16
  1. import json
  2. import urllib
  3. from StringIO import StringIO

  4. a = urllib.urlopen('http://ip.taobao.com/service/getIpInfo.php?ip=117.79.153.62').read()

  5. f = StringIO(a)

  6. data = json.load(f)['data']

  7. for k, v in data.items():
  8.     print k, v


  9. city 北京市
  10. area_id 100000
  11. region_id 110000
  12. area 华北
  13. city_id 110000
  14. country 中国
  15. region 北京市
复制代码





欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2