0

我正在教自己如何使用 json 解析谷歌结果,但是当我运行这段代码(应该可以工作)时,我收到了这个错误:UnicodeEncodeError: 'charmap' codec can't encode character u'\u2014' in position 5: character maps to <undefined>. 有人能帮我吗?

import urllib
import simplejson

query = urllib.urlencode({'q' : 'site:example.com'})
url = 'http://ajax.googleapis.com/ajax/services/search/web?v=1.0&%s&start=50' \
  % (query)
search_results = urllib.urlopen(url)
json = simplejson.loads(search_results.read())
results = json['responseData']['results']
for i in results:
  print i['title'] + ": " + i['url']
4

3 回答 3

1

此错误可能是由控制台应用程序在将 unicode 数据发送到 stdout 时使用的编码引起的。有一篇文章谈到它。

检查标准输出的编码:

>>> import sys
>>> sys.stdout.encoding # On my machine I get this result:
'UTF-8'
于 2012-09-06T22:13:21.007 回答
0

我的猜测是错误出现在 simplejson.loads(search_results.read()) 行中,可能是因为您的 python 拾取的默认编码不是 utf-8 并且 google 正在返回 utf-8。

试试:simplejson.loads(unicode(search_results.read(), "utf8")。

于 2012-09-06T22:13:17.200 回答
0

使用unicode文字。

print i[u'title'] + u": " + i[u'url']

还:

jsondata = simplejson.load(search_results)
于 2012-09-06T21:44:10.640 回答