0

次のコードは私の問題を示しています。これを実行すると、「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を実行しています。

それを回避する方法があるかどうか誰かが知っていますか?いつものようにありがとう:)

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 は現在、Basic Multilingual Plane 以外の Unicode 文字をサポートしていません (つまり、U+00FFFF まで)。これを修正する計画はありますが、Tk コード内の非常に多くのものを変更する必要があります (物事を効率化するために新しい文字列管理レイヤーを実行する必要があり、さらに正規化を実際に整理する必要があるため)そのため、急いで取り組んでいるわけではありません。誰かがこれを整理するのを手伝ってくれるなら、それは大歓迎です。

ただし、キャラクターが BMP の外にあるべきではないと思う場合(申し訳ありませんが、あなたの質問からはわかりません)、コードに別のエンコーディングの問題があります。これを診断する 1 つの方法は、 Unicode チャートから値を取得することです。これは、Unicode チャートが適切に完全で決定的であるためです。そうすれば、話している内容が同じであることを確認できます。

于 2011-02-03T15:00:34.817 に答える