Sto riscontrando problemi con i caratteri unicode da testo recuperato da diverse pagine Web (su siti diversi). Sto usando BeautifulSoup.
Il problema è che l'errore non è sempre riproducibile; a volte funziona con alcune pagine e, a volte, fa un salto lanciando a UnicodeEncodeError
. Ho provato praticamente tutto quello che mi viene in mente, eppure non ho trovato nulla che funzioni in modo coerente senza generare alcun tipo di errore relativo a Unicode.
Una delle sezioni di codice che causa problemi è mostrata di seguito:
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()
Ecco una traccia dello stack prodotta su ALCUNE stringhe quando viene eseguito lo snippet sopra:
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)
Sospetto che ciò sia dovuto al fatto che alcune pagine (o più specificamente, pagine di alcuni siti) potrebbero essere codificate, mentre altre potrebbero non essere codificate. Tutti i siti hanno sede nel Regno Unito e forniscono dati destinati al consumo nel Regno Unito, quindi non ci sono problemi relativi all'internalizzazione o alla gestione di testi scritti in inglese.
Qualcuno ha qualche idea su come risolverlo in modo che io possa RISOLVERE SOLAMENTE questo problema?
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