可怕的python编码错误,如何阻止它们?
这些问题一直困扰着我。为什么?我的控制台似乎无法处理编码。我认为我的浏览器和文字处理器可以处理它。我没有一个包含所有可能的角色的主列表。在不修改数据的情况下缓解此问题的最佳方法是什么可怕的python编码错误,如何阻止它们?,python,unicode,utf-8,character-encoding,Python,Unicode,Utf 8,Character Encoding,这些问题一直困扰着我。为什么?我的控制台似乎无法处理编码。我认为我的浏览器和文字处理器可以处理它。我没有一个包含所有可能的角色的主列表。在不修改数据的情况下缓解此问题的最佳方法是什么 'charmap' codec can't encode character u'\xca' 您需要找出控制台的编码(哪个系统、操作系统等?)-“charmap”对于编解码器来说是一个有点模糊的标识,如下所述: 还有另一组编码 (所谓的charmap编码) 选择一个不同的子集 unicode代码点以及它们是如何
'charmap' codec can't encode character u'\xca'
您需要找出控制台的编码(哪个系统、操作系统等?)-
“charmap”
对于编解码器来说是一个有点模糊的标识,如下所述:
还有另一组编码
(所谓的charmap编码)
选择一个不同的子集
unicode代码点以及它们是如何
代码点映射到字节
0x0-0xff。看看这是怎么做到的
只需打开例如encodings/cp1252.py
(这是一种使用的编码
主要是在Windows上)。有一个
256个字符的字符串常量
这会告诉你哪个角色是
映射到哪个字节值
所有这些编码只能进行编码
65536(或1114111)中的256个
用unicode定义的代码点
i、 例如,它确定了一组可能的编解码器,而不是一个特定的编解码器
一旦您知道您的控制台支持名为'foobar'
的编解码器,请更改您现在使用的语句
print(someunicode)
进入
我使用的是Windows7,通过标准的Windows控制台运行iPython。我如何找出支持哪些编码?@Rhubarb,CP 1252可能是受支持的编码(我不熟悉Windows 7,您应该就此提出一个具体问题,但Windows的旧版本总是支持CP 1252,而CP 1252是一种字符映射编码,所以这是这个方向的一个提示)。不要尝试在IPython下从控制台输入/输出非ASCII字符。只是有马车。要让Unicode控制台IO在最佳状态下运行已经够难的了;不要在与低级错误的斗争中增加额外的混乱。参见例如@bobince,当然可以,但是一旦调用
.encode
您就输出了一个字节流,而不是unicode-qua-unicode——如果您的编码与您的控制台和您发出的unicode码点相匹配,那么这是可行的(您可能需要一个'ignore'作为encode
的第二个参数来覆盖后一个问题)。
print(someunicode.encode('foobar'))