Saya mengalami masalah berurusan dengan karakter unicode dari teks yang diambil dari halaman web yang berbeda (di situs yang berbeda). Saya menggunakan BeautifulSoup.
Masalahnya adalah bahwa kesalahan tidak selalu dapat direproduksi; kadang-kadang bekerja dengan beberapa halaman, dan kadang-kadang, itu muntah dengan melempar a UnicodeEncodeError
. Saya telah mencoba hampir semua yang dapat saya pikirkan, namun saya belum menemukan apa pun yang bekerja secara konsisten tanpa melemparkan semacam kesalahan terkait Unicode.
Salah satu bagian dari kode yang menyebabkan masalah ditunjukkan di bawah ini:
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()
Berikut ini adalah jejak tumpukan yang dihasilkan pada BEBERAPA string ketika snipet di atas dijalankan:
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)
Saya menduga ini karena beberapa halaman (atau lebih spesifiknya, halaman dari beberapa situs) mungkin dikodekan, sementara yang lain mungkin tidak di-kode. Semua situs berbasis di Inggris dan menyediakan data yang dimaksudkan untuk konsumsi Inggris - sehingga tidak ada masalah yang berkaitan dengan internalisasi atau berurusan dengan teks yang ditulis dalam apa pun selain bahasa Inggris.
Adakah yang punya ide bagaimana menyelesaikan ini sehingga saya dapat memperbaiki masalah ini secara KONSISTEN?
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