Perl 正體中文支援說明 來源:唐宗漢
從 5.8.0 版開始, Perl 具備了詳盡的 Unicode (萬國碼) 支援, 也連帶支援了
許多拉丁語系以外的編碼方式; CJK (中日韓) 便是其中的一部份. Unicode 是
國際性的標準, 試圖涵蓋世界上所有的字符: 西方世界, 東方世界, 以及兩者間
的一切 (希臘文, 敘利亞文, 阿拉伯文, 希伯來文, 印度文, 印地安文, 等等).
它也容納了多種作業系統與平臺 (如 PC 及麥金塔).

Perl 本身以 Unicode 進行操作. 這表示 Perl 內部的字串資料可用 Unicode
表示, Perl 的函式與算符 (例如正規表示式比對) 也能對 Unicode 進行操作.
在輸入及輸出時, 為了處理以 Unicode 之前的編碼方式儲存的資料, Perl 提供
了「Encode」這個模組, 可以讓你輕易地讀取及寫入舊有的編碼資料.

Encode 延伸模組支援下列正體中文的編碼方式:

    big5        最初的 Big5 編碼
    big5-hkscs  Big5 + 香港外字集
    cp950       字碼頁 950 (Big5 + 微軟添加的字符)

舉例來說, 將 Big5 編碼的檔案轉成 Unicode, 祗需鍵入下列指令:

    perl -Mencoding=big5,STDOUT,utf8 -pe1 < file.big5 > file.utf8

Perl 也內附了「piconv」, 一支完全以 Perl 寫成的字符轉換工具程式,
用法如下:

    piconv -f big5 -t utf8 < file.big5 > file.utf8
    piconv -f utf8 -t big5 < file.utf8 > file.big5

另外, 利用 encoding 模組, 你可以輕易寫出以字符為單位的程式碼,
如下所示:

    #!/usr/bin/env perl
    # 啟動 big5 字串解析; 標準輸出入及標準錯誤都設為 big5 編碼
    use encoding 'big5', STDIN => 'big5',
                         STDOUT => 'big5', STDERR => 'big5';

    print length("駱駝");            #  2 (雙引號表示字符)
    print length('駱駝');            #  4 (單引號表示位元組)
    print index("諄諄教誨", "彖帢"); # -1 (不包含此子字串)
    print index('諄諄教誨', '彖帢'); #  1 (從第二個字節開始)


額外的中文編碼

如果需要更多的中文編碼, 可以從 CPAN http://www.cpan.org/ 下載
Encode::HanExtra 模組. 它目前提供下列編碼方式:

    euc-tw      Unix 延伸字符集, 包含 CNS11643 平面 1-7
    big5plus    中文數位化技術推廣基金會的 Big5+

另外, Encode::HanConvert 模組則提供了簡繁轉換用的兩種編碼:

    big5-simp   Big5 正體中文與 Unicode 簡體中文互轉
    gbk-trad    GBK 簡體中文與 Unicode 繁體中文互轉

若想在 GBK 與 Big5 之間互轉, 請參考該模組內附的 b2g.pl 與 g2b.pl
兩支程式.

小恐龍工作坊 提供