有没有办法在Perl Tk中修复代码点太高的问题?

时间:2011-01-22 13:25:36

标签: perl utf-8 tk

以下代码演示了我的问题。运行它会给我一条错误消息,内容如下:“UCS-2LE:代码点”在C:/Perl/site/lib/Tk/Widget.pm第205行太高,在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;

1 个答案:

答案 0 :(得分:1)

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

但是,如果您认为您的角色不在BMP之外(我无法从您的问题中说出来,很遗憾地说),那么您的代码中还会遇到其他编码问题。诊断这一点的一种方法是从Unicode charts获取值,因为它们是正确完整且确定的,然后我们可以确保我们所谈论的内容是相同的。