2012-12-07 89 views
1
import json 
import urllib2 
url='http://search.twitter.com/search.json?q=python' 
open=urllib2.urlopen(url) 
response=open.read().encode('utf8') 
data=json.loads(response) 
results=data['results'] 
for result in results: 
    print result['from_user'] + ': ' + result['text'] + '\n' 

提供了錯誤UnicodeEncodeError: 'charmap' codec can't encode characters in position 16-24: character maps to <undefined>在Python 2.7的urllib2和JSON腳本引發的unicode錯誤

任何人都有解決方案嗎?

回答

3

你在做什麼可能是解碼而不是編碼的迴應。

一個很簡短的解釋爲什麼http服務器不知道如何發送unicode字符,只是字節。因此,它使用編碼(如utf-8)將這些字符轉換爲字節。 當你收到來自服務器的響應時,你會收到這個字節塊,如果你想把它翻譯成一個unicode字符列表(基本上是python中的一個unicode對象),你必須解碼它們。

更令人困惑的是,使用utf-8時,ascii字符的較低頻譜(代碼點< 127)與較低的unicode代碼點完全相同。 unicode代碼點編碼相同並適合每個字符可以用單個字節表示的範圍內的情況。

希望這是有幫助的。

+0

沒有解決我的問題。我已經使用了編碼('utf-8')。 – govindreddy

+1

,我建議嘗試在我的回覆中使用「解碼」。 – udoprog