编辑:正如您从反对票中看到的那样,这不是最好的方法。紧随其后的是一个极好的且强烈推荐的答案,因此,如果您正在寻找一个好的解决方案,请使用它。这是一个 hackish 解决方案,以后不会对您友好。
我感觉到你的痛苦,我遇到了很多同样的错误。我解决它的最简单方法(这可能不是最好的方法,这取决于您的应用程序)是将事物转换为 unicode,并忽略错误。这是Unicode HOWTO - Python v2.7.3 文档中的一个示例
>>> unicode('\x80abc', errors='strict')
Traceback (most recent call last):
File "<stdin>", line 1, in ?
UnicodeDecodeError: 'ascii' codec can't decode byte 0x80 in position 0:
ordinal not in range(128)
>>> unicode('\x80abc', errors='replace')
u'\ufffdabc'
>>> unicode('\x80abc', errors='ignore')
u'abc'
虽然这可能不是最方便的方法,但这是一种对我有用的方法。
编辑:
评论中的几个人提到这是一个坏主意,即使提问者接受了答案。这不是一个好主意,如果您要处理欧洲和重音字符,它会搞砸的。但是,如果它不是生产级代码,如果它是您正在处理的个人项目,并且您需要快速修复以使事情顺利进行,那么您可以使用它。您最终将需要使用正确的方法来修复它,这些方法在下面的答案中提到。