这是我在Python中的代码:
[...]
proc = Popen(path, stdin=stdin, stdout=PIPE, stderr=PIPE)
result = [x for x in proc.stdout.readlines()]
result = ''.join(result);
Run Code Online (Sandbox Code Playgroud)
当它是ASCII时,一切正常.当我收到UTF-8文本时stdout,结果是不可预测的.在大多数情况下,输出已损坏.这有什么不对?
顺便说一下,也许这个代码应该以某种方式进行优化?
您是否尝试过解码字符串,然后将UTF-8字符串组合在一起?在Python 2.4+(至少)中,这可以通过实现
result = [x.decode('utf8') for x in proc.stdout.readlines()]
Run Code Online (Sandbox Code Playgroud)
重要的一点是,您的行x是必须被解释为表示字符的字节序列.该decode()方法执行此解释(此处,假设字节采用UTF-8编码):x.decode('utf8')属于类型unicode,您可以将其视为"字符串"(与"0到255之间的数字串"不同) [字节]").
| 归档时间: |
|
| 查看次数: |
6336 次 |
| 最近记录: |