我在处理从不同网页(在不同站点上)获取的文本中的unicode字符时遇到问题。我正在使用BeautifulSoup。
unicode
BeautifulSoup
问题是该错误并不总是可重现的。它有时可以在某些页面上使用,有时它会通过抛出来发声UnicodeEncodeError。我已经尝试了几乎所有我能想到的东西,但是我没有发现任何能正常工作而不抛出某种与Unicode相关的错误的东西。
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)
我怀疑这是因为某些页面(或更具体地说,来自某些站点的页面)可能已编码,而其他页面可能未编码。所有站点都位于英国,并提供供英国消费的数据-因此,与英语以外的其他任何形式的内部化或文字处理都没有问题。
是否有人对如何解决此问题有任何想法,以便我可以始终如一地解决此问题?
基本上,停止使用str从Unicode转换为编码的文本/字节。
str
/
相反,请正确使用.encode()编码字符串:
.encode()
p.agent_info = u' '.join((agent_contact, agent_telno)).encode('utf-8').strip()