在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上使用强调字符运行子进程调用?
答案 0 :(得分:0)
我终于找到了办法:
subprocess.call(cmd.encode('utf-8'),shell=True)