我正在使用beautifulSoup来刮取具有ISO-8859-1编码的页面,但是我遇到了我的小打嗝。
我的行有:
logging.info("Processing [%s]" % (link))
变量link
是从beautifulsoup中删除的值之一。它是一个Unicode字符串,我可以通过键入print link
来打印它。它在控制台上完全按照它的方式显示,但上面的行引发了这个错误:
UnicodeDecodeError: 'ascii' codec can't decode byte 0xc3 in position 14: ordinal not in range(128)
我现在已经阅读了Unicode,但我无法弄清楚它为什么能够打印它但却无法记录它。
有问题的字符串是:
booba-concert-à-bercy
关于我搞砸了这个问题的任何想法?
谢谢。
答案 0 :(得分:3)
logging
不喜欢unicode
;传递它的字节。
logging.info("Processing [%s]" % (link.encode('utf-8')))
答案 1 :(得分:2)
我设法通过在sitecustomize.py
目录中添加名为Python/Lib/site-packages
的文件来解决此问题。此文件包含两行:import sys
和sys.setdefaultencoding('utf-8')
。
之前的默认编码是ascii
因此问题。现在我不需要为链接变量指定显式编码,因为它使用默认编码,即utf-8
并将其转换为。{/ p>
当然,在我的终端使用相同的编码之前,我永远不会看到这些字符,但这不会破坏我的代码。