注意:这不是通常的“为什么我的编码没有设置?”问题!
我有一个Qt ui文件,我正在使用以下命令将其转换为与PyQt4一起使用:
pyuic4 model_importer.ui > model_importer.py
它运行良好,但当我尝试将其作为模块导入,甚至作为脚本运行时,会失败,并出现以下错误:
File "C:\Users\j\projects\model_importer.py", line 1 SyntaxError: Non-ASCII character '\xff' in file C:\Users\j\model_importer.py on line 1, but no encoding declared; see http://www.python.org/peps/pep-0263.html for details
下面的代码(具有正确的编码)是pyuic4的输出,如果将其粘贴到一个新的文件中,则可以正常工作。我的原始文件是here。当文件完全为空时也会发生此错误,这会导致我认为文件本身存在某种损坏。在
有人能解释一下这个奇怪的错误吗?在
# -*- coding: utf-8 -*-
# Form implementation generated from reading ui file '.\model_importer.ui'
#
# Created: Thu Mar 12 13:57:45 2015
# by: PyQt4 UI code generator 4.10.2
#
# WARNING! All changes made in this file will be lost!
from PyQt4 import QtCore, QtGui
try:
_fromUtf8 = QtCore.QString.fromUtf8
except AttributeError:
def _fromUtf8(s):
return s
try:
_encoding = QtGui.QApplication.UnicodeUTF8
def _translate(context, text, disambig):
return QtGui.QApplication.translate(context, text, disambig, _encoding)
except AttributeError:
def _translate(context, text, disambig):
return QtGui.QApplication.translate(context, text, disambig)
class Ui_ModelImporterDlg(object):
def setupUi(self, ModelImporterDlg):
ModelImporterDlg.setObjectName(_fromUtf8("ModelImporterDlg"))
ModelImporterDlg.resize(722, 223)
self.gridLayout_2 = QtGui.QGridLayout(ModelImporterDlg)
self.gridLayout_2.setObjectName(_fromUtf8("gridLayout_2"))
self.buttonBox = QtGui.QDialogButtonBox(ModelImporterDlg)
self.buttonBox.setOrientation(QtCore.Qt.Horizontal)
self.buttonBox.setStandardButtons(QtGui.QDialogButtonBox.Cancel|QtGui.QDialogButtonBox.Ok)
self.buttonBox.setObjectName(_fromUtf8("buttonBox"))
self.gridLayout_2.addWidget(self.buttonBox, 1, 1, 1, 1)
self.retranslateUi(ModelImporterDlg)
QtCore.QObject.connect(self.buttonBox, QtCore.SIGNAL(_fromUtf8("accepted()")), ModelImporterDlg.accept)
QtCore.QObject.connect(self.buttonBox, QtCore.SIGNAL(_fromUtf8("rejected()")), ModelImporterDlg.reject)
QtCore.QMetaObject.connectSlotsByName(ModelImporterDlg)
def retranslateUi(self, ModelImporterDlg):
ModelImporterDlg.setWindowTitle(_translate("ModelImporterDlg", "Model Importer", None))
self.file_tw.setSortingEnabled(True)
self.file_tw.headerItem().setText(0, _translate("ModelImporterDlg", "Model", None))
self.file_tw.headerItem().setText(1, _translate("ModelImporterDlg", "Version", None))
import resource_rc
是BOM!显然是设置,但隐藏在崇高的文本3。将
"show_encoding": true
添加到用户设置中,然后将编码更改为UTF-8,解决了这个问题。谢谢@ekhurvo我的另一种解决方法是直接使用
pyuic.py
,这似乎不会与BOM一起输出:python C:\osgeo\apps\Python27\Lib\site-packages\PyQt4\uic\pyuic.py -o model_importer.py model_importer.ui
相关问题 更多 >
编程相关推荐