我正在尝试以更加用户友好和自动魔术的方式处理 Python 脚本中的不同编码(有用于 utf8 的 API)。它是一个跨平台的控制台脚本。
为了打印到stdout,我使用了sys.stdout.encoding,它似乎总是在打印到控制台时做正确的事情。然而,当 stdout 被管道时,它变成了None。
所以在那种情况下,我假设我正在通过管道传输到一个文件并使用 locale.getpreferredencoding() 但是:
- 我不确定这是打印到文件的正确编码,但它可以跨平台工作。
- 这在通过管道传输到程序
|时不起作用。如果在这种情况下存在编码的标准或预期行为,我不知道如何检测这种情况。
请您参考如下方法:
如果为 None,只需将数据输出为 utf-8,并记录下来。如果碰巧有其他编码的用例,请通过命令行或其他方式将其作为一个选项。
