2011-12-31 4 views
2

Страница кодируется в UTF-8, а HTML-файл python работает хорошо, нет 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 Я нашел решение в моей последней попытке, возможно, это поможет другим с той же проблемой. Он должен быть закодирован, не декодируется

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

Вы не должны получать UnicodeEncodeError: 'ascii'.. ошибки при печати. Это часто возникает, если ваш locale поврежден или установлен на C. Тогда Python не может установить соответствующий кодер в потоке stdout.

Запустите locale и проверьте наличие ошибок или предупреждений.

Если вы не можете исправить свой языковой стандарт, вы можете часто переопределять кодер stdout Python с помощью установки PYTHONIOENCODING в вашей среде на кодировку, соответствующую вашей эмуляции терминала. Часто вы можете получить с:

export PYTHONIOENCODING=UTF-8 

или

PYTHONIOENCODING=UTF-8 python my_script.py 
Смежные вопросы