2011-12-31 10 views
2

このページはUTF-8でエンコードされていますが、PythonのHTMLParserではうまく動作しますが、UnicodeDecodeErrorはありませんが、BeautifulSoupで解析しようとするとエラーが発生します。 私は_*_コーディングしようとしました:どこでもutf-8 _*_.encode('utf-8')をしてもエラーには、PythonのBeautifulSoupでエンコードされています

import urllib 
from BeautifulSoup import BeautifulSoup 
args=urllib.urlencode({'keywords':'magic'}) 
doc=urllib.urlopen('http://www.example.com/submit', args) 
soup=BeautifulSoup(doc) 
stuff = soup.findAll('section',id='banner') 
print stuff 

Traceback (most recent call last): 
     File "test.py", line 7, in <module> 
     print stuff 
    UnicodeEncodeError: 'ascii' codec can't encode character u'\xed' in position 112: ordinal not in range(128) 

答えて

4

[OK]を取得しています私は多分それは同じ問題に他人を助けるだろう、私の最後の試みで解決策を見つけました。 それはエンコードする必要が、あなたは印刷するときは、UnicodeEncodeError: 'ascii'..エラーを取得してはならない

print([e.encode('utf-8', 'ignore') for e in stuff]) 
0

をデコードしません。これは多くの場合、localeが壊れているか、Cに設定されている場合に発生します。 Pythonはstdoutストリームに適切なエンコーダーを設定できません。

localeを実行し、エラーまたは警告を確認してください。

ロケールを修正できない場合は、環境内のPYTHONIOENCODINGを端末エミュレーションと一致するエンコードに設定して、Pythonのstdoutエンコーダを上書きすることができます。

export PYTHONIOENCODING=UTF-8 

または

PYTHONIOENCODING=UTF-8 python my_script.py 
:多くの場合、あなたがすることによって得ることができます
関連する問題