json中的UnicodeEncodeError

时间:2012-09-06 21:42:37

标签: python json

我正在教自己如何使用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']

3 个答案:

答案 0 :(得分:1)

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

检查stdout的编码:

>>> import sys
>>> sys.stdout.encoding # On my machine I get this result:
'UTF-8'

答案 1 :(得分:0)

Use unicode literals.

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

此外:

jsondata = simplejson.load(search_results)

答案 2 :(得分:0)

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

尝试:simplejson.loads(unicode(search_results.read(),“utf8”)。