0

以下代码演示了我的问题。运行它会给我一个错误消息,上面写着:“UCS-2LE:code point "\x{20541}" too high at C:/Perl/site/lib/Tk/Widget.pm line 205. at E:\test。请在第 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;
4

1 回答 1

1

Tk 目前不支持基本多语言平面之外的 Unicode 字符(即,最多 U+00FFFF)。虽然有解决此问题的计划,但它需要更改 Tk 代码中的很多东西(因为必须完成一个新的字符串管理层才能使事情变得高效,而且需要真正解决规范化问题)所以它的工作不是很着急。我敢肯定,如果有人要帮助解决这个问题,那将是受欢迎的。

但是,如果您认为您的角色应该在 BMP 之外(我无法从您的问题中看出,很抱歉),那么您的代码中还有其他一些编码问题。诊断此问题的一种方法是从Unicode 图表中获取值,因为它们是正确完整和确定的,然后我们可以确保我们正在谈论的是同一件事。

于 2011-02-03T15:00:34.817 回答