当前位置:  开发笔记 > 编程语言 > 正文

为什么有些字符不能在Python的IDLE中输入?

如何解决《为什么有些字符不能在Python的IDLE中输入?》经验,为你挑选了1个好方法。

我不知道如何解释这个,实际上我正在寻找解释,所以我只想提一些步骤来重现这个问题.希望有人能够理解和阐述:

    Windows 8.1上的Python 3.5.0.(但无论Python和Windows版本如何,这都应该是可重现的.)

    安装波斯标准键盘.(它可以从这里下载.再次我确定问题不仅限于这个特定的键盘,并且在其他一些语言中有一些字符具有相同的问题.只是为了重现性.)

    打开IDLE,将键盘的布局设置为波斯语并键入一些字符.

    对于某些字符,如'Â'(Shift + h).它们打字非常好.

    对于其他一些角色,比如'ی'(d).它们被转换为类似的字符,在本例中为'ي'(注意字形下的小点).

    有些字符无法输入.例如'﷼'(Shift + 4).这些输入为'?' 在IDLE.

    以上所有字符都可以在我安装的几乎任何其他程序中输入.其中一个最简单的是notepad.exe.

    我们可以在另一个程序中输入相同的字符,例如notepad.exe,然后将它们复制并粘贴到IDLE中.这表明IDLE支持unicode字符,只是不能输入它们.

我是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映射引起的.

为了测试它是否在python/tkinter绑定或tcl/tk本身中的一些错误配置,我下载并安装了Tkabber.这是一个用Tcl/Tk编写的应用程序.那么,存在完全相同的问题,即我不能输入上面的字符,但可以复制和粘贴它们.所以我的结论是问题的根源在于tcl/tk本身而不是IDLE/Python/tkinter.

我的问题仍然存在.



1> AXO..:

经过一番搜索后,我在Tk的bug追踪器上找到了这张票.这几乎解释了幕后发生的事情.TCL/TK在内部使用代码页将键盘输入转换为UTF-8.

不幸的是,自2014-09-18以来,这个bug一直没有活动,这是一件令人伤心的事情.这个bug对许多语言都有很大的影响,包括那些拥有Windows代码页(在此列出)的语言,以及许多其他没有任何与之相关的代码页的语言(如孟加拉语).

IMO,这应该是TCL/TK开发团队的最高优先事项之一.在当前状态下,用户不应该依赖Tcl/Tk来处理需要Windows上的Unicode输入支持的应用程序.

推荐阅读
小妖694_807
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有