我想在使用subprocess模块时,在我的python文件中定义一个unicode字面量,但我得不到需要的结果。例如下面的代码:
# -*- coding: utf-8 -*-
import sys
import codecs
import subprocess
cmd = ['echo', u'你好']
new_cmd = []
for c in cmd:
if isinstance(c,unicode):
c = c.encode('utf-8')
new_cmd.append(c)
subprocess.call(new_cmd)
打印输出
ä½ å¥½
如果我改变代码为:
# -*- coding: utf-8 -*-
import sys
import codecs
import subprocess
cmd = ['echo', u'你好']
new_cmd = []
for c in cmd:
if isinstance(c,unicode):
c = c.encode(sys.getfilesystemencoding())
new_cmd.append(c)
subprocess.call(new_cmd)
我得到下面的结果。
??
现阶段我只能假设我一次又一次地犯了一个简单的错误。但是我很难弄清楚它是什么。当通过Python的子进程调用时,如何才能让echo打印出以下内容:
你好
编辑:
Python的版本是2.7。我在Windows 8上运行,但我希望解决方案是平台无关的。
echo
时它是如何工作的? - Mark Ransom