2012-09-06 36 views
0

我在教自己如何用json解析google結果,但是當我運行這個代碼(哪個工作)時,我得到這個錯誤:UnicodeEncodeError: 'charmap' codec can't encode character u'\u2014' in position 5: character maps to <undefined>。有人能幫我嗎?json中的UnicodeEncodeError

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'] 
+2

您可以包括一個回溯,所以我們可以找出問題的根源 –

回答

0

Use unicode literals.

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

另外:

jsondata = simplejson.load(search_results) 
+0

好吧,我改變了印刷線從印刷I [「標題」] +「: 「+ i ['url']打印我[u'title'] + u」: 「+我[u'url']但沒有任何事情發生。你的意思是jsondata = simplejson.load(search_results)? – user1505497

+2

@ user1505497:因爲'.load()'函數(不是's')爲你讀取(更高效),所以不需要執行'.loads(search_results.read())'。 –

0

我的猜測是錯誤的是在simplejson.loads(search_results.read())線,可能是因爲默認的編碼python是不是utf-8,谷歌正在返回utf-8。

嘗試:simplejson.loads(UNICODE(search_results.read(),「UTF-8」)

1

這個錯誤可能是由於你的控制檯應用程序發送Unicode數據到標準輸出時使用的編碼引起有an article說。談論它

檢查標準輸出的編碼:?

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