微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何让IDLE接受Unicode字符的粘贴?

通常,当我在IDLE中交互式工作时,我想将一个Unicodestring粘贴到IDLE窗口中。 它似乎正确粘贴,但立即产生一个错误。 在输出显示相同的字符没有问题。

>>> c = u'ĉ' Unsupported characters in input >>> print u'u0109' ĉ

我怀疑,像大多数Windows程序一样,input窗口在内部使用UTF-16,并且在处理完整的Unicode集合时没有问题; 问题是IDLE坚持强制所有input到认的mbcs代码页面,而不在该页面的任何东西都被拒绝。

有什么办法来configuration或哄骗IDLE接受完整的Unicode字符集作为input?

Python 3.2处理这个更好,并没有任何问题,我扔在它。

HTTP状态:在.net浏览器控件中的12002

如何在不占用焦点的屏幕上绘制通知(Windows)

DCOM CoCreateInstanceEx E_ACCESSDENIED

快速轻松地从一个文件加载所需的内容

是PathIsRelative函数的WinAPI错误吗?

我知道我可以简单地将代码保存到UTF-8文件并导入,但我希望能够在交互式窗口中使用Unicode字符。

在Windows 7上安装ImageMagick和rmagick

基于CDialog的MFC应用程序只能在主监视器中启动

如何find跳转列表窗口?

在Windows上安装Redmine时发生RMagick错误

在IIS 7.5 / Windows 7家庭高级版RavendB错误

我终于想出了一个办法。 由于IDLE的源代码是发行版的一部分,因此可以进行一些快速编辑来启用该功能。 这些文件通常位于C:Python27Libidlelib 。

第一步是防止IDLE尝试将所有这些不错的Unicode字符编码到无法处理它们的字符集中。 这由IOBinding.py控制。 编辑这个文件,找到if sys.platform == 'win32':之后的部分if sys.platform == 'win32':注释掉这一行:

#encoding = locale.getdefaultlocale()[1]

现在在它后面添加这一行:

encoding = 'utf-8'

我希望有一种方法可以用环境变量或其他东西来覆盖它,但getdefaultlocale直接调用Win32函数获取全局配置的Windows mbcs编码。

这是战斗的一半,现在我们需要让命令行解释器识别输入字节是UTF-8编码的。 似乎没有办法将编码传递给翻译,所以我想出了所有黑客的母亲。 也许有一点点耐心的人可以想出一个更好的方法,但是现在这个工作。 输入在PyShell.py中的runsource函数中处理。 更改以下内容

if isinstance(source,types.UnicodeType): from idlelib import IOBinding try: source = source.encode(IOBinding.encoding) except UnicodeError: self.tkconsole.resetoutput() self.write("Unsupported characters in inputn") return

至:

from idlelib import IOBinding # line moved if isinstance(source,types.UnicodeType): try: source = source.encode(IOBinding.encoding) except UnicodeError: self.tkconsole.resetoutput() self.write("Unsupported characters in inputn") return source = "#coding=%sn%s" % (IOBinding.encoding,source) # line added

我们利用PEP 263来指定提供给解释器的每一行输入的编码。

更新 :在Python 2.7.10中 ,不再需要在PyShell.py进行更改,如果编码设置为utf-8 ,它已经可以正常工作。 不幸的是我还没有找到绕过IOBinding.py的变化的IOBinding.py 。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐