我有一个Python 3程序,可以从Windows-1252编码的文件中读取一些字符串:
with open(file, 'r', encoding="cp1252") as file_with_strings:
# save some strings
我后来想写信给stdout。我试过:
^{pr2}$
我在这儿挠头。我想打印我从文件中得到的字符串,就像它在cp1252中显示的那样。(在我的终端中,当我使用more $file
时,这些字符会显示为问号,因此我的终端可能是ascii格式的。)
希望能澄清一下!谢谢!在
Tags:
例如:
这将在解码后打印“hi hello\n”(在cp1252中编码)。在
你要么在用管道连接脚本,要么你的区域设置被破坏了。您应该修复环境,而不是将脚本修复到环境中,因为这会使脚本变得非常脆弱。在
如果使用管道,Python假设输出应该是“ASCII”,并将stdout的编码设置为“ASCII”。在
在正常情况下,Python使用
locale
来计算要应用于stdout的编码。如果您的区域设置被破坏(未安装或损坏),Python将默认为“ASCII”。区域设置“C”也将为您提供“ASCII”编码。在通过键入
locale
检查您的区域设置,并确保没有返回错误。E、 g如果所有其他方法都失败了或者您正在管道中,您可以通过设置
^{pr2}$PYTHONIOENCODING
环境变量来覆盖Python的区域设置检测。E、 g记住您的shell有一个语言环境,您的终端有一个编码-它们都需要正确设置
对于那些有同样问题的人,我最后做了:
相关问题 更多 >
编程相关推荐