perlcn - 簡體中文 Perl 指南 歡迎來到 Perl 的天地! 從 5.8.0 版開始, Perl 具備了完善的 Unicode (統一碼) 支援, 也連帶支援了許多拉丁語系以外的編碼方式; CJK (中日韓) 便是其中的一部份. Unicode 是國際性的標準, 試圖涵蓋世界上所有的字元: 西方世界, 東方世界, 以及兩者間的一切 (希臘文, 敘利亞文, 亞拉伯文, 希伯來文, 印度文, 印地安文, 等等). 它也容納了多種作業系統與平臺 (如 PC 及麥金塔). Perl 本身以 Unicode 進行操作. 這表示 Perl 內部的字串資料可用 Unicode 表示; Perl 的函式與算符 (例如正規表示式比對) 也能對 Unicode 進行操作. 在輸入及輸出時, 為了處理以 Unicode 之前的編碼方式存放的資料, Perl 提供了 Encode 這個模組, 可以讓你輕易地讀取及寫入舊有的編碼資料. Encode 延伸模組支援下列簡體中文的編碼方式 ('gb2312' 表示 'euc-cn'): euc-cn Unix 延伸字元集, 也就是俗稱的國標碼 gb2312-raw 未經處理的 (低位元) GB2312 字元表 gb12345 未經處理的中國用繁體中文編碼 iso-ir-165 GB2312 + GB6345 + GB8565 + 新增字元 cp936 字碼頁 936, 也可以用 'GBK' (擴充國標碼) 指明 hz 7 位元逸出式 GB2312 編碼 舉例來說, 將 EUC-CN 編碼的檔案轉成 Unicode, 祗需鍵入下列指令: perl -Mencoding=euc-cn,STDOUT,utf8 -pe1 < file.euc-cn > file.utf8 Perl 也內附了 "piconv", 一支完全以 Perl 寫成的字元轉換工具程式, 用法如下: piconv -f euc-cn -t utf8 < file.euc-cn > file.utf8 piconv -f utf8 -t euc-cn < file.utf8 > file.euc-cn 另外, 利用 encoding 模組, 你可以輕易寫出以字元為單位的程式碼, 如下所示: #!/usr/bin/env perl # 啟動 euc-cn 字串解析; 標準輸出入及標準錯誤都設為 euc-cn 編碼 use encoding 'euc-cn', STDIN => 'euc-cn', STDOUT => 'euc-cn'; print length("駱駝"); # 2 (雙引號表示字元) print length('駱駝'); # 4 (單引號表示位元組) print index("諄諄教誨", "蛔喚"); # -1 (不包含此子字串) print index('諄諄教誨', '蛔喚'); # 1 (從第二個位元組開始) 在最後一列例子裡, "諄" 的第二個位元組與 "諄" 的第一個位元組結合成 EUC-CN 碼的 "蛔"; "諄" 的第二個位元組則與 "教" 的第一個位元組結合成 "喚". 這解決了以前 EUC-CN 碼比對處理上常見的問題.

額外的中文編碼
如果需要更多的中文編碼, 可以從 CPAN (<http://www.cpan.org/>) 下載 Encode::HanExtra 模組. 它目前提供下列編碼方式: gb18030 擴充過的國標碼, 包含繁體中文 另外, Encode::HanConvert 模組則提供了簡繁轉換用的兩種編碼: big5-simp Big5 繁體中文與 Unicode 簡體中文互轉 gbk-trad GBK 簡體中文與 Unicode 繁體中文互轉 若想在 GBK 與 Big5 之間互轉, 請參考該模組內附的 b2g.pl 與 g2b.pl 兩支程式, 或在程式內使用下列寫法: use Encode::HanConvert; $euc_cn = big5_to_gb($big5); # 從 Big5 轉為 GBK $big5 = gb_to_big5($euc_cn); # 從 GBK 轉為 Big5

進一步的資訊
請參考 Perl 內附的大量說明檔案 (不幸全是用英文寫的), 來學習更多關於 Perl 的知識, 以及 Unicode 的使用方式. 不過, 外部的資源相當豐富:

提供 Perl 資源的網址
Perl 的首頁 (由歐萊禮公司維護) Perl 綜合典藏網 (Comprehensive Perl Archive Network) Perl 郵遞論壇一覽

學習 Perl 的網址
簡體中文版的歐萊禮 Perl 書藉

Perl 使用者集會
中國 Perl 推廣組一覽

Unicode 相關網址
Unicode 學術學會 (Unicode 標準的制定者) Unix/Linux 上的 UTF-8 及 Unicode 答客問 Encode, Encode::CN, encoding, perluniintro, perlunicode Jarkko Hietaniemi <jhi@iki.fi> Autrijus Tang (唐宗漢) <autrijus@autrijus.org>

跋
本頁面中文版由中文 man 手冊頁計劃提供。
中文 man 手冊頁計劃：https://github.com/man-pages-zh/manpages-zh