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>

誰にもこれに対する解決策がありますか?

4

1 に答える 1

3

あなたがしようとしているのは、おそらく応答をデコードしてエンコードしないことです。

非常に簡単な説明は、http サーバーがユニコード文字を送信する方法を認識していないためです。バイトだけです。したがって、utf-8 などのエンコーディングを使用して、これらの文字をバイトに変換します。サーバーから応答を受け取ると、このバイトのチャンクを受け取ります。それを Unicode 文字のリスト (基本的には Python のUnicodeオブジェクト) に変換したい場合は、それらをデコードする必要があります。

さらに混乱を招くのは、utf-8 を使用する場合、ASCII 文字の下位スペクトル (コードポイント < 127) が下位 Unicode コードポイントとまったく同じであることです。Unicode コードポイントが同じようにエンコードされ、各文字を 1 バイトで表現できる範囲内に収まる状況。

これが役に立てば幸いです。

于 2012-12-07T05:28:31.600 に答える