У меня проблемы с работой символов юникода из текста, полученного с разных веб-страниц (на разных сайтах). Я использую 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)
Я подозреваю, что это связано с тем, что некоторые страницы (или, в частности, страницы с некоторых сайтов) могут быть закодированы, а другие могут быть не закодированы. Все сайты базируются в Великобритании и предоставляют данные, предназначенные для потребления в Великобритании - поэтому нет проблем, связанных с интернализацией или работой с текстом, написанным на чем-либо, кроме английского.
У кого-нибудь есть идеи, как решить эту проблему, чтобы я ПОСТОЯННО исправил эту проблему?