【问题标题】:Are the subprocess/commands modules Unicode aware with Python2?Python2 是否支持 Unicode 子进程/命令模块?
【发布时间】:2017-04-10 08:46:58
【问题描述】:

从 subprocess 中的各种函数或 Python2 的 commands 模块中捕获的 stdout/stderr 是否保证是标准字符串,或者在某些条件下是否有可能返回 Unicode 对象? ...如果返回一个标准的 Python2 字符串 is,如果子进程输出 Unicode,会发生什么?

或者更直接一点,稳健处理可能输出 Unicode 字符的 Python2 子进程调用的最佳方法是什么?

如果是 Python3 会不会有很大的不同?

【问题讨论】:

    标签: python subprocess python-2.x python-unicode


    【解决方案1】:

    子进程输出在 Python 2(此处称为“str”)和 Python 3(此处称为“bytes”)中始终是字节。子进程不可能输出 unicode,因为“unicode 对象”是 Python 内部的一个概念。输出总是字节。

    如果字节是文本数据的表示,那么在解码输出之前,您必须知道子进程使用什么编码。不同的子流程可以输出不同的编码,所以这里没有一个正确的答案。

    这里有一个奇怪的边缘情况需要注意。如果您使用 kwarg universal_newlines=True 启动子进程,则输出将使用 locale.getpreferredencoding 函数返回的编码自动解码。

    【讨论】:

      猜你喜欢
      • 2012-03-18
      • 1970-01-01
      • 2013-05-29
      • 1970-01-01
      • 1970-01-01
      • 2011-11-10
      • 2011-10-30
      • 2023-03-21
      • 2014-01-11
      相关资源
      最近更新 更多