UnicodeEncodeError,好像不能设置errors='ignore'

UnicodeEncodeError, can't seem to set errors='ignore'

我是 Python 的新手,所以我希望这是我所缺少的简单内容。

我 运行宁 Python 2.7 Windows 7

我正在尝试通过命令行 运行 一个基本的 Twitter 抓取程序。但是我不断收到以下错误:

File "C:\Python27\lib\encodings\cp437.py", line 12, in encode
    return codecs.charmap_encode(input,errors,encoding_map)
UnicodeEncodeError: 'charmap' codec can't encode character u'\u2019' in position 79: character maps to (undefined)

我基本上明白这里发生了什么,它试图在 cp437 中打印到控制台,但它被抓取的推文中的 unicode 字符弄糊涂了。

我想做的就是让它用“?”替换那些字符。或者只是让它完全删除这些字符。我已经阅读了很多关于此的帖子,但我不知道该怎么做。

我打开了错误中引用的 cp437.py 文件,并将所有 errors='strict' 更改为 errors='ignore',但这并没有解决问题。

然后我尝试进入 C:\Python27\Lib\codecs.py 文件并将所有 errors='strict' 更改为 errors='ignore' 但这也没有解决问题。

有什么想法吗?就像我说的,希望我只是遗漏了一些基本的东西,但我已经阅读了很多关于这个的帖子,但我似乎无法弄清楚。

非常感谢。 赛斯

我不建议更改内置库 - 它们旨在允许处理编码错误而无需摆弄(如果您有更改,不再清楚任何适用于其他人的解决方案,会为你工作)。

您可能只想将 errors='ignore' 传递到您使用的任何编码函数中以跳过错误字符,或者 errors='replace' 将该字符替换为字符 \ufff表示有问题。 [ error='strict' 如果您不传递任何值,则为默认值。 ]

但是,如果您要打印到命令行,您可能不希望编码为 un​​icode,而是 ASCII - 因为 unicode 包含命令行无法打印的字符。 (而且我怀疑是什么导致错误被抛出,而不是你从 Twitter 得到的响应中有非标准的 unicode 字符)。

例如尝试

 print original_data.encode('ascii', 'ignore')