有没有办法解决Perl Tk中代码点过高的问题?
下面的代码演示了我的问题。运行它会给我一条错误消息,内容是:“UCS-2LE:code point”\x{20541}在C:/Perl/site/lib/Tk/Widget.pm第205行太高。在E:\test.pl第9行” 我的Tk版本是804.028,我在WinXP(简体中文版本)上运行ActivePerl10.0.0 有人知道有什么办法吗?像往常一样谢谢你:)有没有办法解决Perl Tk中代码点过高的问题?,perl,utf-8,tk,Perl,Utf 8,Tk,下面的代码演示了我的问题。运行它会给我一条错误消息,内容是:“UCS-2LE:code point”\x{20541}在C:/Perl/site/lib/Tk/Widget.pm第205行太高。在E:\test.pl第9行” 我的Tk版本是804.028,我在WinXP(简体中文版本)上运行ActivePerl10.0.0 有人知道有什么办法吗?像往常一样谢谢你:) 使用严格;使用警告; 使用utf8; 使用传统知识; my$mw=主窗口->新建; my$text=“Tk当前不支持基本多语言平面
使用严格;使用警告;
使用utf8;
使用传统知识;
my$mw=主窗口->新建;
my$text=“Tk当前不支持基本多语言平面之外的Unicode字符(即,最多U+00FFFF)。虽然有计划解决此问题,但需要在Tk代码中更改大量内容(因为为了提高工作效率,必须创建一个新的字符串管理层,另外还需要对规范化进行真正的整理)因此,这项工作并不是很匆忙。我相信,如果有人提供整理方面的帮助,这将是受欢迎的
但是,如果你认为你的角色不应该在BMP之外(很抱歉,我不能从你的问题判断)然后您的代码中还有一些其他编码问题。诊断这一问题的一种方法是从中获取值,因为它们是正确完整和确定的,然后我们可以确保我们讨论的内容是相同的。这可能是十六进制/十进制问题,因为U+20541确实无效。字符倽
是十进制20541,但它是。@dkarp:U+20541是一个完全有效的Unicode字符(@mscha:Unicode只升到0x10FFFF,0x20541比它大。只有17个平面,而不是33个。不确定在什么宇宙中0x20541比0x10FFFF大,但下面是OP:中的字符,以及更多关于平面的字符:Crap,你是对的。我在值中读取了一个额外的十六进制数字。相反,它看起来像是UCS-2问题,因为UCS-2不能t在BMP之外进行编码。