我遇到了debian
/ django
/ python
/ subprocess.Popen
/的编码问题wkhtmltopdf
(不确定是哪个部分导致了问题)。
该问题与wkhtmltopdf
通过 Pythonsubprocess.Popen
在 Amazon Ubuntu 服务器实例上传递 unicode 字符串有关。
编码:
popen = subrocess.Popen(
['wkhtmltopdf', '--header-right', u'Copyright © 2012 Sité Náme', 'file.html', '-'],
stdout=subprocess.PIPE)
在我的 OSX Lion 开发机器上,页面标题正确显示版权符号和重音字母。在我们的生产和测试服务器上,没有那么多。
Django 在上面一行返回这个错误:'execv() arg 2 must contain only strings'。如果我去掉非 ascii 字符,它确实可以工作。
服务器是 Debian GNU/Linux 6.0.4。Python 版本是 Python 2.6.6。我认为相关, sys.getfilesystemencoding()
在服务器上返回“ANSI_X3.4-1968”,但在 OSX 上返回“UTF-8”。
我尝试添加 .encode('utf-8') 和其他各种组合,但是,虽然我可以删除错误,但它只是用乱码替换了非 ascii 字符。
任何帮助将不胜感激。