Skip to main content
 首页 » 编程设计

python之sys.stdout.encoding为None时怎么办

2025年05月04日7java哥

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

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

所以在那种情况下,我假设我正在通过管道传输到一个文件并使用 locale.getpreferredencoding() 但是:

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

请您参考如下方法:

如果为 None,只需将数据输出为 utf-8,并记录下来。如果碰巧有其他编码的用例,请通过命令行或其他方式将其作为一个选项。