unicode的python3.7内置exec()问题

时间:2019-07-18 13:51:58

标签: python python-3.x

假设ex1.py包含:

 exec(open('ex2.py').read())

和ex2.py包含:

from PyQt5.QtWidgets import *
class HelloWindow(QWidget):
    def __init__(self):
        QWidget.__init__(self)
        self.x = "وه شه نی گیان" #some Unicode words
        self.y = "قوربانه ت" #some Unicode words
        self.setWindowTitle(self.x)
        gridLayout = QGridLayout(self)
        self.title = QLabel(self.y)
        gridLayout.addWidget(self.title, 0, 0)
        self.setLayout(gridLayout)
app = QApplication([])
mainWin = HelloWindow()
mainWin.resize(400,200)
mainWin.show()
app.exec_()

情况:Windows 7 64bit,python 3.7.4,pyqt 5.12.2

打开cmd并运行(python ex2.py)可以在标题和标签中正确显示Unicode文本,并且可以正常工作;但运行(python ex1.py)会破坏文本的编码。

使用kivy代替pyqt5会得到相同的结果。我相信这不是pyqt5的错误, 在Ubuntu 18中,以上两种方法都可以正常工作。

使用import而不是exec解决了问题,但我不希望那样,因为我必须在每个脚本文件中再次导入所有内容,并且我有很多。谁能告诉我如何克服这个问题? 预先谢谢你。

1 个答案:

答案 0 :(得分:0)

exec(open('ex2.py', encoding='utf-8').read())