子进程中的python unicode在控制台和mod_wsgi中不起作用

时间:2015-09-11 11:46:00

标签: python subprocess

在python控制台上,我可以运行(急剧的回声):

import subprocess
cmd = u'echo "é"'
subprocess.call(cmd,shell=True)

但如果我在Django视图(mod_wsgi)中运行该代码,它会崩溃:

subprocess.call(cmd,shell=True)
   File "/usr/lib64/python2.6/subprocess.py", line 444, in call
     return Popen(*popenargs, **kwargs).wait()
   File "/usr/lib64/python2.6/subprocess.py", line 595, in __init__
     errread, errwrite)
   File "/usr/lib64/python2.6/subprocess.py", line 1106, in _execute_child
     raise child_exception
 TypeError: execv() arg 2 must contain only strings

我可以通过执行.encode('ascii','replace')来解决这个问题,但它会删除强调的字符。

在调用子shell时,我看不到任何指定语言环境或编码的方法。我尝试将带有lang和locale的mod_wsgi配置为utf-8,但它没有帮助。

如何在mod_wsgi上使用强调字符运行子进程调用?

1 个答案:

答案 0 :(得分:0)

我终于找到了办法:

subprocess.call(cmd.encode('utf-8'),shell=True)
相关问题