这是我的 Python 代码:
[...]
proc = Popen(path, stdin=stdin, stdout=PIPE, stderr=PIPE)
result = [x for x in proc.stdout.readlines()]
result = ''.join(result);
当它是 ASCII 时,一切正常。当我在 stdout
中接收 UTF-8 文本时,结果是不可预测的。在大多数情况下,输出已损坏。这里有什么问题?
顺便说一句,也许这段代码应该以某种方式进行优化?
最佳答案
您是否尝试过解码您的字符串,然后将您的 UTF-8 字符串组合在一起?在 Python 2.4+(至少)中,这可以通过
result = [x.decode('utf8') for x in proc.stdout.readlines()]
重要的一点是您的行 x
是必须解释为表示字符的字节序列。 decode()
方法执行此解释(此处,假定字节采用 UTF-8 编码):x.decode('utf8')
是类型unicode
,您可以将其视为“字符串”(不同于“0 到 255 [字节] 之间的数字字符串”)。
关于python - 如何让 Popen() 正确理解 UTF-8?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3927151/