下面的代码演示了我的问题。运行它给我的错误信息是:“UCS-2LE:code point "\x{20541}”too high at C:/Perl/site/lib/Tk/Widget.pm line 205. at E:\test.pl line 9“。
我的Tk版本是804.028,在WinXP (简体中文版)上运行的是ActivePerl 10.0.0。
有没有人知道有没有办法绕过它?一如既往的感谢:)
use strict;use warnings;
use utf8;
use Tk;
my $mw = MainWindow->new;
my $text = ""; #A Chinese character
eval{
$mw->Label(-text => $text)->pack;
};
warn $@ if $@;
MainLoop;发布于 2011-02-03 23:00:35
Tk目前不支持基本多语言平面以外的Unicode字符(例如,直到U+00FFFF)。虽然有一个解决这个问题的计划,但它需要在Tk代码中更改大量的东西(因为必须完成一个新的字符串管理层才能使事情变得高效,而且需要真正解决规范化问题),所以它不会被匆忙地处理。我相信,如果有人提供帮助来解决这个问题,那将是受欢迎的。
但是,如果您认为您的字符不应该在BMP之外(我不能从您的问题中分辨出来,很抱歉这么说),那么您的代码中就存在其他一些编码问题。诊断这种情况的一种方法是从Unicode charts获取值,因为它们是适当的完整和确定的,然后我们可以确保我们谈论的是同一件事。
https://stackoverflow.com/questions/4768049
复制相似问题