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