我有一个用 Python 编写的命令行程序,当我通过命令行上的另一个程序将其通过管道传输时,sys.stdout.encoding
为 None
。我想这是有道理的——输出可能是另一个程序,或者您将其重定向到的文件,或者其他任何东西,并且它不知道需要什么编码。但我也不会!这个程序将被许多不同的人(幽默的我)以不同的方式使用。我应该谨慎行事并只输出 ascii(用问号替换非 ascii 字符)吗?还是我应该输出 UTF-8,因为它现在非常普遍?
最佳答案
我建议您使用当前的语言环境。
Python2> import locale
Python2> locale.getpreferredencoding()
'UTF-8'
系统知道它应该是什么,而另一端,如果它也使用当前语言环境,将做正确的事情。
关于python - 如果命令行程序不确定 stdout 的编码,它应该输出什么编码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5013599/