У мене проблеми з символами Unicode з тексту, отриманого з різних веб-сторінок (на різних сайтах). Я використовую BeautifulSoup.
Проблема полягає в тому, що помилка не завжди відтворюється; іноді він працює з деякими сторінками, а іноді - барфікує, кидаючи UnicodeEncodeError
. Я спробував майже все, про що можу придумати, але все ж не знайшов нічого, що працює постійно, не кидаючи якусь помилку, пов’язану з Unicode.
Один з розділів коду, який викликає проблеми, показаний нижче:
agent_telno = agent.find('div', 'agent_contact_number')
agent_telno = '' if agent_telno is None else agent_telno.contents[0]
p.agent_info = str(agent_contact + ' ' + agent_telno).strip()
Ось слід стека, який утворюється на деяких Струнках, коли виконується фрагмент вище:
Traceback (most recent call last):
File "foobar.py", line 792, in <module>
p.agent_info = str(agent_contact + ' ' + agent_telno).strip()
UnicodeEncodeError: 'ascii' codec can't encode character u'\xa0' in position 20: ordinal not in range(128)
Я підозрюю, що це тому, що деякі сторінки (або більш конкретно, сторінки з деяких сайтів) можуть бути закодовані, а інші можуть бути незашифрованими. Усі веб-сайти знаходяться у Великобританії та надають дані, призначені для споживання у Великобританії - тому жодних питань, пов'язаних з інтерналізацією чи спілкуванням з текстом, написаним іншим, крім англійської, не існує.
У когось є ідеї, як це вирішити, щоб я міг КОНСИСТИЧНО виправити цю проблему?
import os; import locale; os.environ["PYTHONIOENCODING"] = "utf-8"; myLocale=locale.setlocale(category=locale.LC_ALL, locale="en_GB.UTF-8"); ... print(myText.encode('utf-8', errors='ignore'))
.
$ export PYTHONIOENCODING=utf8