我不知道如何解释这个,实际上我正在寻找解释,所以我只想提一些重现问题的步骤。希望有人能够理解和阐述:
我是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'
感谢。
更新
请参阅下面的前三条评论。这个问题似乎是由于在输入tkinter应用程序时使用WindowsBestFit mappings引起的。
为了测试它是在python / tkinter绑定或tcl / tk本身中的一些错误配置,我下载并安装了Tkabber。这是一个用Tcl / Tk编写的应用程序。那么,存在完全相同的问题,即我不能输入上述字符,但可以复制和粘贴它们。所以我的结论是问题的根源在于tcl / tk本身而不是IDLE / Python / tkinter。
我的问题仍然存在。
答案 0 :(得分:6)
经过一番搜索后,我在this ticket上找到了Tk's bug tracker。这几乎解释了幕后发生的事情。 TCL / TK在内部使用代码页将键盘输入转换为UTF-8。
不幸的是,自2014-09-18以来,这个bug一直没有活动,这是一件令人伤心的事情。这个bug对许多语言产生了巨大的影响,包括那些拥有Windows代码页(listed here)的语言,以及许多其他没有任何与之相关的代码页(如孟加拉语)的语言。
IMO,这应该是TCL / TK开发团队的最高优先事项之一。在当前状态下,用户不应该依赖Tcl / Tk来处理需要Windows上的Unicode输入支持的应用程序。