首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >解码编码为GB2312的json

解码编码为GB2312的json
EN

Stack Overflow用户
提问于 2012-12-20 01:51:46
回答 2查看 1.2K关注 0票数 2

通过GET请求,我从Google geocode API中提取了json:

代码语言:javascript
复制
import urllib, urllib2

url = "http://maps.googleapis.com/maps/api/geocode/json"
params = {'address': 'ivory coast', 'sensor': 'false'}
request = urllib2.Request(url + "?" + urllib.urlencode(params))
response = urllib2.urlopen(request)
st = response.read()

结果看起来是这样的:

代码语言:javascript
复制
{
   "results" : [
      {
         "address_components" : [
            {
               "long_name" : "Côte d'Ivoire",
               "short_name" : "CI",
               "types" : [ "country", "political" ]
            }
         ],
         "formatted_address" : "Côte d'Ivoire",
         "geometry" : { ... # rest snipped

如您所见,国家名称有一些编码问题。我试着像这样猜测编码:

代码语言:javascript
复制
import chardet
encoding = chardet.detect(st)
print "String is encoded in {0} (with {1}% confidence).".format(encoding['encoding'], encoding['confidence']*100)

它返回:

代码语言:javascript
复制
String is encoded in GB2312 (with 99.0% confidence).

我想知道的是,我如何才能将它转换成一个带有编码的字典,其中ô (o with properly )是正确显示的。

我试过了:

代码语言:javascript
复制
st = st.decode(encoding['encoding']).encode('utf-8')

但我得到的是:

代码语言:javascript
复制
{
   "results" : [
      {
         "address_components" : [
            {
               "long_name" : "C么te d'Ivoire",
               "short_name" : "CI",
               "types" : [ "country", "political" ]
            }
         ],
         "formatted_address" : "C么te d'Ivoire",
         "geometry" : { ... # rest snipped
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-12-20 02:08:08

google api结果总是用UTF-8编码的,您甚至可以从它们的HTTP Content-Type头中手动读取:

票数 3
EN

Stack Overflow用户

发布于 2012-12-20 02:14:43

一旦您(正确地)解码了它,就不要对它进行重新编码;json可以很好地与unicode一起工作。

代码语言:javascript
复制
>>> json.loads(u"[\"C\xf4te d'Ivoire\"]")
[u"C\xf4te d'Ivoire"]
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13958196

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档