1

我遇到了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 字符。

任何帮助将不胜感激。

4

0 回答 0