我用Tkinter(Python2.7)编写了一个程序,Tkinter(Python2.7)是挪威语的一个拼字助手,它包含一些特殊字符(æøå
),这意味着我的wordlist(ordliste)包含有特殊字符的单词。
当我运行函数finnord(c*)时,它返回'cd'。我正在使用entry.get()
将单词放入函数中。
我的问题是entry.get()的编码。我有本地编码UTF-8
,但是当我在entrybox中编写任何特殊字符并将它们与wordlist匹配时,我会得到一个UniCodeError
。
这是我的输出。
Warning (from warnings module):
File "C:\pythonprog\scrabble\feud.py", line 46
if s not in liste and s in ordliste:
UnicodeWarning: Unicode equal comparison failed to convert both arguments to Unicode -
interpreting them as being unequal
当我在壳里写下:
> ordinn.get()
u'k\xf8**e'
> ordinn.get().encode('utf-8')
'k\xc3\xb8**e'
> print ordinn.get()
kø**e
> print ordinn.get().encode('utf-8')
kø**e
有人知道我为什么不能将ordinn.get()(entry)与我的单词列表匹配吗?
我可以这样重现错误:
因此,或许
s
是一个str object
,而liste
或ordliste
包含unicode
,或者(正如eryksun在评论中指出的那样)反之亦然。解决方案是对str object
s(最有可能使用utf-8
编解码器)进行解码,使其成为unicode
。如果没有帮助,请打印并发布
我相信可以通过将所有字符串转换为
unicode
来避免这个问题。当从
norsk.txt
生成ordliste
时,使用codecs.open('norsk.txt','r','utf-8')
:尽快将所有用户输入转换为unicode:
所以不妨试试这个:
相关问题 更多 >
编程相关推荐