python - 如何让 Popen() 正确理解 UTF-8?

标签 python

这是我的 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/

相关文章:

python - Python 3 中的 random.sample(jupyter 笔记本)

python - 密集层的 LSTM 初始状态

python - 如何对第二列定义的固定间隔内一列的元素求和?

python - 如何更改参数以防止 xgboost 精度卡住

python - 向量化 np.arange 或等价物

python - 给定一个字符串,如何返回 json 路径?

python - Pandas 重新索引日期索引按组重新访问

python - 将异步可迭代对象转换为同步可迭代列表的内置方法

python - 我想生成连续的日期

python - 如何使用 Datashader + Bokeh 后端在 HoloViews 中进行链接数据选择