Есть ли способ исправить проблему кода слишком высокой в ​​Perl Tk? - PullRequest
0 голосов
/ 22 января 2011

Следующий код демонстрирует мою проблему. При его запуске выдается сообщение об ошибке: «UCS-2LE: кодовая точка« \ x {20541} »слишком высокая в строке C5 / /Perl/site/lib/Tk/Widget.pm 205. в E: \ test. pl line 9 ".

моя версия Tk - 804.028, и я использую ActivePerl 10.0.0 на WinXP (упрощенная китайская версия).

Кто-нибудь знает, есть ли способ обойти это? Спасибо, как всегда:)

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 Ответ

1 голос
/ 03 февраля 2011

Tk в настоящее время не поддерживает символы Юникода вне базовой многоязычной плоскости (т. Е. До U + 00FFFF).Несмотря на то, что есть план, чтобы исправить это, он требует изменения очень многих вещей внутри кода Tk (потому что новый уровень управления строками должен быть сделан, чтобы вещи были эффективными, плюс есть необходимость действительно разобраться в нормализации)так что над этим не торопятся.Я уверен, что если кто-то предложит помощь в решении этой проблемы, это будет приветствоваться.

Однако, если вы считаете, что ваш персонаж должен не находиться вне BMP (я могу 'из твоего вопроса, извини, скажи) тогда у тебя есть другая проблема с кодировкой в ​​твоем коде.Один из способов диагностировать это состоит в том, чтобы получить значение из Unicode-диаграмм , поскольку они должным образом завершены и точны, и мы можем затем убедиться, что то, о чем мы говорим, - это то же самое.

...