UnicodeEncodeError,似乎无法设置错误='忽略'

时间:2015-04-19 14:58:06

标签: python python-2.7 unicode stdout

我对Python很新,所以我希望这很简单,我只是缺少。

我在Windows 7上运行Python 2.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',但这也没有解决问题。

有什么想法吗?就像我说的那样,希望我只是缺少一些基本的东西,但我已经阅读了很多帖子,我似乎无法解开它。

非常感谢。 塞特

1 个答案:

答案 0 :(得分:2)

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

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

但是,如果要打印到命令行,您可能不希望编码为unicode,而是ASCII,而不是ASCII - 因为unicode包含命令行无法打印的字符。 (我怀疑导致错误的那个,而不是你从Twitter获得的响应中存在非标准的unicode字符)。

尝试例如。

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