Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
有没有办法解决Perl Tk中代码点过高的问题?_Perl_Utf 8_Tk - Fatal编程技术网

有没有办法解决Perl Tk中代码点过高的问题?

有没有办法解决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当前不支持基本多语言平面

下面的代码演示了我的问题。运行它会给我一条错误消息,内容是:“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当前不支持基本多语言平面之外的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之外进行编码。