当我传递非ASCII命令行参数时,PyQt4`QCoreApplication.arguments()`返回'unknown'

时间:2013-09-12 16:12:16

标签: python python-3.x pyqt4 decode

当我在Python 3-PyQt4应用程序中传递包含非ASCII字符的字符串作为命令行参数并尝试通过QCoreApplication.arguments()访问它们时出现问题:

In [1]: from PyQt4.QtGui import QApplication

In [2]: from PyQt4.QtCore import QCoreApplication

In [3]: QApplication(['a', 'b'])
Out[3]: <PyQt4.QtGui.QApplication at 0x7f987ed07510>

In [4]: QCoreApplication.arguments()
Out[4]: ['a', 'b']

In [5]: QApplication(['a', 'b', 'γ', 'δ', 'v'])
Out[5]: <PyQt4.QtGui.QApplication at 0x7f987ed07808>

In [6]: QCoreApplication.arguments()
Out[6]: ['a', 'b', 'unknown', 'unknown', 'v']

In [7]:

我该如何解决?

编辑:我正在使用Linux。

1 个答案:

答案 0 :(得分:1)

QApplication的编码是Latin-1,你需要它是UTF-8。

要解决此问题,您可以先使用.encode('utf-8')对参数进行手动编码,然后再将其传递给QApplication