2008/03/24

Perl Tk 中文亂碼解法


  本來以為Perl處理中文比Python優秀,但遇到要用Tk 來開發個簡單的圖形介面程式也要注意此問題。

  其實只要指定使用UTF-8 編碼即可解決。以下為程式碼:

========================================================

#!/usr/bin/perl -w
use strict;

use utf8; ## 加入此行
use Tk;
my($mw, $child,);

$mw = MainWindow->new;

$mw->title('大家好');
my $label = $mw->Label(-text => '大家好');
$label->pack;

$child = $mw->Button(-text => '確定',
-command => \&on_quit)->pack;

## $child->pack();


MainLoop();

sub on_quit
{
exit 0;
}

========================================================

  另外一個常用的 print 後面要列印的字串中如果有中文,請用單引號不要用雙引號。換行字元 \n 也不要放在單引號中,它與變數在單引號字串中都不會被處理。

  中文基本問題解決,可以專心利用perl來發展一些工具程式縮短煩人的一些小問題並提高工作效率。本來是要用 Python,但工作上的 Sun OS (Solars)上是不太可能為我們這些 AP owner 特別安裝 python。但 Perl 一定是預設都有安裝,只是版本老舊,但也夠用了.因此不太想花時間在 Python上了。