当sys.stdout.encoding为None时,我该怎么办?

时间:2012-04-20 15:38:46

标签: python character-encoding

我正在尝试在Python脚本中处理不同的编码,以更加用户友好和自动魔术的方式(有utf8的API)。它是一个跨平台的控制台脚本。

要打印到stdout我使用sys.stdout.encoding,它似乎在打印到控制台时几乎总是做正确的事情。但是当stdout 管道时,它变为None

因此,在这种情况下,我假设我正在管道传输文件并使用locale.getpreferredencoding()但是:

  • 我不确定这是打印到文件的正确编码,但它可以跨平台工作。
  • 管道到程序 |时,这不起作用。我不知道如果在这种情况下存在标准或预期的行为进行编码,就不会发现这种情况。

1 个答案:

答案 0 :(得分:1)

如果为“无”,只需将数据输出为utf-8,然后将其记录下来。如果碰巧有其他编码的用例,可以通过命令行或其他方式选择。