【发布时间】:2013-07-20 21:02:59
【问题描述】:
所以,我正在使用 Python(与 PyQt),但我遇到了这个奇怪的问题。 在此:
self.listwithnames = ["Α.Μ.","Μονομελές-Τριμελές", "Ονοματεπώνυμο","Όνομα Πατρός","Όνομα Μητρός","Ημερομηνία Γέννησης",
"Τόπος Γέννησης","Φύλο","Εθνικότητα","Διεύθυνση Κατοικίας","Αστυνομικό Τμήμα",
"Τηλέφωνο","Επάγγελμα-Ιδιότητα","Ημερομηνία Δικασίμου","Αριθμός Πινακίου",
"Πράξη","Ημερομηνία Τέλεσης","Τόπος Τέλεσης","Ύπαρξη Συνενόχων",
"Παραδοχή","Περιγραφή Πράξης","Εμφάνιση","Αναβολή","Απόφαση","Αριθμός Απόφασης",
"Ημερομηνία Απόφασης","Παρουσία","Προηγούμενες Αποφάσεις","Υπεύθυνος Επιμελητής", "Σχόλια"]
#Επιλογές Αναζήτησης ComboBox:
self.combobox = QtGui.QComboBox(self)
for i in range(0,28):
self.combobox.addItem(self.listwithnames[i].decode("utf-8"))
self.horizontalLayout.addWidget(self.combobox, 0, 1, 1, 1)
在这里,它工作得很好! 但在这里:
l = [1, 8, 19, 20, 22, 27]
self.list_with_lists = [["Μονομελές", "Τριμελές"], ["Αγόρι", "Κορίτσι"], ["Ναι", "Όχι"], ["Ναι", "Όχι"], ["Πρωτοείσακτος", "Υπότροπος", "Αναβολή"], ["Παρών", "Απών"]]
if self.combobox.currentIndex() in l:
for l_ in self.list_with_lists[l.index(self.combobox.currentIndex())]:
for string in l_:
self.combobox2.addItem(string.decode('utf-8'))
它只是没有,我得到这个错误:
UnicodeDecodeError: 'utf8' codec can't decode byte 0xce in position 0: unexpected end of data
这很奇怪……
已解决:
This is the final code:
l = [1, 8, 19, 20, 22, 27]
self.list_with_lists = [[u"Μονομελές", u"Τριμελές"], [u"Αγόρι", u"Κορίτσι"], [u"Ναι", u"Όχι"], [u"Ναι", u"Όχι"], [u"Πρωτοείσακτος", u"Υπότροπος", u"Αναβολή"], [u"Παρών", u"Απών"]]
if self.combobox.currentIndex() in l:
self.combobox2.clear()
for l_ in self.list_with_lists[l.index(self.combobox.currentIndex())]:
self.combobox2.addItem(l_)
【问题讨论】:
-
这对我来说是希腊语......但说真的,你可能会尝试不使用
string作为变量名,因为它是 python 中的受保护字,它是类型的名称! -
尝试删除该循环而不是
for string in l_:,然后只执行l_.decode('utf-8')。 -
你试过了吗?
l_是self.list_with_lists[index]中的一个项目,这意味着l_应该是两个词之一... -
如果一些明显的问题没有得到解决,那么很难调试代码。除了不使用“字符串”(与拉丁字符一起使用没关系,这是一个清晰的问题),您还需要使用 unicode 字符串,例如 u"Μονομελές"。粘贴材料中的压痕也是错误的。
-
你使用 Python 2 还是 Python 3?如果是 Python 2,也许你可以写:
self.list_with_lists = [[u"Μονομελές", u"Τριμελές"], [u"Αγόρι", u"Κορίτσι"], [u"Ναι", u"Όχι"], [u"Ναι", u"Όχι"], [u"Πρωτοείσακτος", u"Υπότροπος", u"Αναβολή"], [u"Παρών", u"Απών"]]然后不要使用decode('utf-8')方法?
标签: python pyqt decode python-unicode