如果一个命令行程序不确定stdout的编码,它应该输出什么编码?

我有一个用Python编写的命令行程序,当我通过命令行上的另一个程序pipe理它时, sys.stdout.encodingNone 。 这是有道理的,我想 – 输出可能是另一个程序,或者一个文件,你redirect到,或者其他什么,它不知道什么编码是需要的。 但我也不是! 这个程序将以不同的方式被许多不同的人使用(幽默我)。 我应该玩它安全,只输出ascii(用问号replace非ASCII字符)? 或者我应该输出UTF-8,因为这些日子如此普遍?

Solutions Collecting From Web of "如果一个命令行程序不确定stdout的编码,它应该输出什么编码?"

我建议你使用当前的语言环境。

 Python2> import locale Python2> locale.getpreferredencoding() 'UTF-8' 

系统知道应该是什么,另一方面,如果它也使用当前的语言环境,将做正确的事情。

你应该使用locale.getpreferredencoding()返回的值。

如果你的应用程序没有真正处理大量的国际化, ascii就足够了。 但如果没有,我会说utf-8或更好的utf-16应该是一天的顺序。

你应该输出UTF-8,因为那就是每个人都应该使用的。 这不是一个错误。 ;)