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' 如果您不传递任何值,则为默认值。 ]
但是,如果您要打印到命令行,您可能不希望编码为 unicode,而是 ASCII - 因为 unicode 包含命令行无法打印的字符。 (而且我怀疑是什么导致错误被抛出,而不是你从 Twitter 得到的响应中有非标准的 unicode 字符)。
例如尝试
print original_data.encode('ascii', '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' 如果您不传递任何值,则为默认值。 ]
但是,如果您要打印到命令行,您可能不希望编码为 unicode,而是 ASCII - 因为 unicode 包含命令行无法打印的字符。 (而且我怀疑是什么导致错误被抛出,而不是你从 Twitter 得到的响应中有非标准的 unicode 字符)。
例如尝试
print original_data.encode('ascii', 'ignore')