UnicodeEncodeError: кодек 'ascii' не может кодировать символ u '\ xa0' в позиции 20: порядковый номер не в диапазоне (128)

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

Я подозреваю, что это потому, что некоторые страницы (или, более конкретно, страницы с некоторых сайтов) могут быть закодированы, в то время как другие могут быть не закодированы. Все сайты базируются в Великобритании и предоставляют данные, предназначенные для потребления в Великобритании, поэтому не возникает проблем, связанных с интернализацией или работой с текстом, написанным на чем-либо, кроме английского.

У кого-нибудь есть идеи относительно того, как решить эту проблему, чтобы я ПОСТОЯННО исправил эту проблему?

Ответы на вопрос(24)

Ваш ответ на вопрос