可怕的python编码错误,如何阻止它们?

问题描述:

这些一直困扰我无尽的。为什么?看来我的控制台无法处理编码。我认为我的浏览器和文字处理器可以处理它。我没有列出所有可能出现的窒息字符。在不修改我的数据的情况下缓解此问题的最佳方法是什么?可怕的python编码错误,如何阻止它们?

'charmap' codec can't encode character u'\xca' 

您需要了解您的控制台的编码(等等......哪个系统,操作系统,?) - 'charmap'是不幸的编解码器一个有些模糊的标识,如the docs解释:

还有另外一组编码 的(所谓的字符表编码)是 选择所有 Unicode代码点的不同的子集,这些 码点是如何映射到字节 0x0-0xff。要看看这是怎么完成的 只需打开例如编码/ cp1252.py (这是主要在Windows上使用 的编码)。有一个 字符串常量与256个字符 ,它显示哪个字符是 映射到哪个字节值。

所有这些编码只能编码在unicode中定义的65536个(或1114111) 码点中的256个。

即,它标识一组可能的编解码器,而不是一个特定的编解码器。

一旦你知道你的控制台支持名为'foobar'编解码器,改变你的报表,现在

print(someunicode) 

都成

print(someunicode.encode('foobar')) 
+0

我在Windows 7中,通过使用标准的Windows控制台上运行的IPython 。如何找出哪些编码被支持? – Rhubarb 2010-05-17 01:19:47

+0

@Rhubarb,CP 1252可能是支持的(我对Windows 7并不熟悉,您应该为此打开一个具体问题,但Windows的旧版本总是支持CP 1252,而CP 1252是charmap编码,所以这是这方面的一个暗示)。 – 2010-05-17 01:21:27

+0

不要在IPython下从/向控制台输入/输出非ASCII字符。这只是越野车。试图让Unicode控制台IO在最好的时候表现出来已经很困难了;不要增加对较低级别错误的额外困惑。见例如。 https://bugs.launchpad.net/ipython/+bug/339642 – bobince 2010-05-17 01:24:05