Farklı web sayfalarından (farklı sitelerde) getirilen metinden unicode karakterlerle ilgili sorunlar yaşıyorum. BeautifulSoup kullanıyorum.
Sorun, hatanın her zaman yeniden üretilememesidir; bazen bazı sayfalarla çalışır ve bazen a UnicodeEncodeError
. Aklıma gelen her şeyi denedim ve yine de Unicode ile ilgili bir tür hata atmadan sürekli çalışan bir şey bulamadım.
Kodun sorunlara neden olan bölümlerinden biri aşağıda gösterilmiştir:
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()
Yukarıdaki snippet çalıştırıldığında SOME dizelerinde üretilen bir yığın izlemesi:
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)
Bunun bazı sayfaların (veya daha spesifik olarak bazı sitelerdeki sayfaların) kodlanmış olabileceğini, bazılarının ise kodlanmamış olabileceğinden şüpheleniyorum. Tüm siteler İngiltere'de yerleşiktir ve İngiltere tüketimi için veri sağlar - bu nedenle içselleştirme veya İngilizce dışında herhangi bir şeyle yazılmış metinlerle ilgili herhangi bir sorun yoktur.
Herkes bu sorunu sürekli olarak gidermek böylece bunu çözmek için herhangi bir fikir var mı?
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