2011-01-22 60 views
0

以下代碼演示了我的問題。運行它給我的錯誤消息是:「UCS-2LE:代碼點」\「太高,在C:/Perl/site/lib/Tk/Widget.pm行205.在E:\ test。 pl line 9「。有沒有辦法在Perl Tk中修復代碼點太高的問題?

我的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 [email protected] if [email protected]; 

MainLoop; 
+0

這可能是一個十六進制/十進制問題,因爲U + 20541確實無效。字符「倽」是* decimal * 20541,但是它是[U + 503D](http://www.fileformat.info/info/unicode/char/503d/index.htm)。 – dkarp 2011-01-22 13:33:27

回答

1

Tk當前不支持基本多語言平面以外的Unicode字符(即最多U + 00FFFF)。雖然有一個解決這個問題的計劃,但它需要改變Tk代碼中的很多東西(因爲必須完成一個新的字符串管理層才能提高效率,另外還需要真正理清規範化)所以它不是很急。我敢肯定,如果有人提供幫助來整理這件事,這將是受歡迎的。

但是,如果你認爲你的角色應該是而不是在BMP之外(我不能說你的問題,很抱歉地說),那麼你的代碼中有一些其他的編碼問題。一種診斷方法是從Unicode charts獲得價值,因爲它們是正確的完整和明確的,然後我們可以確保我們所談論的是同一件事。

相關問題