我不知道如何解释这个,实际上我正在寻找解释,所以我只想提一些步骤来重现这个问题.希望有人能够理解和阐述:
我是IDLE的粉丝.它是标准Python安装附带的轻量级IDE,我不想因此而切换到另一个IDE.但对于我来说,以上是最讨厌IDLE的事情.每当我需要编写一个包含波斯语字符的程序时,我不能相信IDLE正确输入它们,我必须打开其他程序并使用复制粘贴方法.
我正在寻找的是:
此信息也可能有所帮助:
>>> import locale
>>> locale.getdefaultlocale()
('en_US', 'cp1256')
>>> locale.getpreferredencoding()
'cp1256'
>>> locale.getlocale()
('English_United States', '1252')
>>>
>>> import sys
>>> sys.getdefaultencoding()
'utf-8'
Run Code Online (Sandbox Code Playgroud)
谢谢.
更新:
请参阅下面的前三条评论.似乎这个问题是由在tkinter应用程序中键入时使用WindowsBestFit映射引起的.
为了测试它是否在python/tkinter绑定或tcl/tk本身中的一些错误配置,我下载并安装了Tkabber.这是一个用Tcl/Tk编写的应用程序.那么,存在完全相同的问题,即我不能输入上面的字符,但可以复制和粘贴它们.所以我的结论是问题的根源在于tcl/tk本身而不是IDLE/Python/tkinter.
我的问题仍然存在.
我在Tkinter(Python 2.7)编写了一个程序,这是一个挪威语的æøåscrabblehelper,它包含一些特殊的字符(),这意味着我的wordlist(ordliste)包含带有特殊字符的单词.
当我运行我的函数finnord(c*)时,它返回'cd'.我正在使用一个entry.get()字来输入我的功能.
我的问题是entry.get()的编码.我有本地编码UTF-8,但是UniCodeError当我在输入框中编写任何特殊字符并将它们与我的wordliste匹配时,我得到了一个.
这是我的输出.
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
Run Code Online (Sandbox Code Playgroud)
当我写在我的shell中时:
> 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
Run Code Online (Sandbox Code Playgroud)
任何人都知道为什么我不能将ordinn.get()(条目)与我的单词列表相匹配?
我不知道如何在GUI中写希腊字母.我正在研究物理程序,我需要在GUI上显示单位.
我是否必须下载任何额外的库?我必须使用一个模块吗?在GUI中编写字母的最简单方法是什么?
我读了很多关于UTF8的内容,但没有弄清楚如何使用它.
我正在使用Tkinter进行GUI
我使用的是Python 2.6.6
谢谢
tkinter ×3
python ×2
character ×1
codepages ×1
encoding ×1
python-idle ×1
tk-toolkit ×1
unicode ×1