Python decode()不';不能工作-但只能在windows下工作

Python decode()不';不能工作-但只能在windows下工作,python,character-encoding,python-3.x,decode,Python,Character Encoding,Python 3.x,Decode,好的。。。这真的很简单。我有一个(非常简单的)脚本,可以从url获取数据,然后对其进行解码(如果可以的话,我以后会使用它) 当我执行这个时,我会 File "C:\Program Files\Python32\lib\encodings\cp1252.py", line 19, in encode return codecs.charmap_encode(input,self.errors,encoding_table)[0] UnicodeEncodeError: 'charmap'

好的。。。这真的很简单。我有一个(非常简单的)脚本,可以从url获取数据,然后对其进行解码(如果可以的话,我以后会使用它)

当我执行这个时,我会

 File "C:\Program Files\Python32\lib\encodings\cp1252.py", line 19, in encode 
 return codecs.charmap_encode(input,self.errors,encoding_table)[0]
 UnicodeEncodeError: 'charmap' codec can't encode characters in position
不过,这只在Windows上发生

我有一台Linux机器(Ubuntu12.10,我喜欢它),相同的IDE(eclipse),相同的python版本(3.2.3),相同的脚本,它工作得很好。我得到了所有的文本,它是可读的和可处理的。 我已经检查了目录-cp1255是否存在。我试图用“cp1252”替换“cp1255”-它可以工作,但编码的文本是乱七八糟的


我是不是遗漏了什么?我在两个项目中都得到了相同的设置,但它目前只在Linux上工作

错误消息告诉您,问题根本不在于
decode()
。您遇到的问题是
encode()
。Python无法将unicode直接发送到终端,必须使用终端声称支持的任何编码对其进行编码

如果您在Windows上运行,则可能在命令窗口中运行。在命令提示下键入
chcp
,检查您正在使用的代码页;在我的系统上,显示我正在使用代码页850,但我认为从错误中,您的命令提示符是cp1252。您试图打印的文本必须包含无法使用命令提示符的代码页进行编码的字符

如果打印的
仅用于调试,则您可以尝试:

print(repr(rsp.read().decode("cp1255")))
看看这是否有帮助


或者,在运行脚本之前,使用
chcp 1255
将命令提示符设置为与数据相同的代码页,或者使用
chcp 65001
将命令提示符设置为使用utf-8。别忘了检查您使用的字体是否支持希伯来文字符。

如何复制?我猜你的数据在不同的操作系统上是不同的…你自己先验证一下。我对你索赔的信任度接近于零。问题在于印刷线。如果我只解码的话,就可以了。所以是的,这可能是一个操作系统问题,任何1255页都可以。例如,我使用的是eclipse控制台窗口,而不是命令行,不幸的是,您的建议在那里不起作用,或者我遗漏了一些东西。但是,在使用Python shell时,一切都正常工作,因此这似乎是Windows命令行的问题。没有什么问题-我将把它输出到一个文件中,这样实际的目标就实现了,但是现在,问题仍然没有得到回答
打印什么(sys.stdout.encoding)
说什么?它在eclipse控制台上显示Cp1252,这是有意义的。cp1252不包含希伯来语字符,因此您需要更改eclipse用于控制台的代码页。
print(repr(rsp.read().decode("cp1255")))