NAME
perlcn - 簡(jiǎn)體中文 Perl 指南
DESCRIPTION
歡迎來(lái)到 Perl 的天地!
從 5.8.0 版開(kāi)始, Perl 具備了完善的 Unicode (統(tǒng)一碼) 支援, 也連帶支援了許多拉丁語(yǔ)系以外的編碼方式; CJK (中日韓) 便是其中的一部份. Unicode 是國(guó)際性的標(biāo)準(zhǔn), 試圖涵蓋世界上所有的字符: 西方世界, 東方世界, 以及兩者間的一切 (希臘文, 敘利亞文, 亞拉伯文, 希伯來(lái)文, 印度文, 印地安文, 等等). 它也容納了多種作業(yè)系統(tǒng)與平臺(tái) (如 PC 及麥金塔).
Perl 本身以 Unicode 進(jìn)行操作. 這表示 Perl 內(nèi)部的字符串?dāng)?shù)據(jù)可用 Unicode 表示; Perl 的函式與算符 (例如正規(guī)表示式比對(duì)) 也能對(duì) Unicode 進(jìn)行操作. 在輸入及輸出時(shí), 為了處理以 Unicode 之前的編碼方式存放的數(shù)據(jù), Perl 提供了 Encode 這個(gè)模塊, 可以讓你輕易地讀取及寫入舊有的編碼數(shù)據(jù).
Encode 延伸模塊支援下列簡(jiǎn)體中文的編碼方式 ('gb2312' 表示 'euc-cn'):
euc-cn Unix 延伸字符集, 也就是俗稱的國(guó)標(biāo)碼
gb2312-raw 未經(jīng)處理的 (低比特) GB2312 字符表
gb12345 未經(jīng)處理的中國(guó)用繁體中文編碼
iso-ir-165 GB2312 + GB6345 + GB8565 + 新增字符
cp936 字碼頁(yè) 936, 也可以用 'GBK' (擴(kuò)充國(guó)標(biāo)碼) 指明
hz 7 比特逸出式 GB2312 編碼
舉例來(lái)說(shuō), 將 EUC-CN 編碼的檔案轉(zhuǎn)成 Unicode, 祗需鍵入下列指令:
perl -Mencoding=euc-cn,STDOUT,utf8 -pe1 < file.euc-cn > file.utf8
Perl 也內(nèi)附了 ``piconv'', 一支完全以 Perl 寫成的字符轉(zhuǎn)換工具程序, 用法如下:
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
# 啟動(dòng) euc-cn 字串解析; 標(biāo)準(zhǔn)輸出入及標(biāo)準(zhǔn)錯(cuò)誤都設(shè)為 euc-cn 編碼
use encoding 'euc-cn', STDIN => 'euc-cn', STDOUT => 'euc-cn';
print length("駱駝"); # 2 (雙引號(hào)表示字符)
print length('駱駝'); # 4 (單引號(hào)表示字節(jié))
print index("諄諄教誨", "蛔喚"); # -1 (不包含此子字符串)
print index('諄諄教誨', '蛔喚'); # 1 (從第二個(gè)字節(jié)開(kāi)始)
在最后一列例子里, ``諄'' 的第二個(gè)字節(jié)與 ``諄'' 的第一個(gè)字節(jié)結(jié)合成 EUC-CN 碼的 ``蛔''; ``諄'' 的第二個(gè)字節(jié)則與 ``教'' 的第一個(gè)字節(jié)結(jié)合成 ``喚''. 這解決了以前 EUC-CN 碼比對(duì)處理上常見(jiàn)的問(wèn)題.
額外的中文編碼
如果需要更多的中文編碼, 可以從 CPAN (http://www.cpan.org/) 下載 Encode::HanExtra 模塊. 它目前提供下列編碼方式:
gb18030 擴(kuò)充過(guò)的國(guó)標(biāo)碼, 包含繁體中文
另外, Encode::HanConvert 模塊則提供了簡(jiǎn)繁轉(zhuǎn)換用的兩種編碼:
big5-simp Big5 繁體中文與 Unicode 簡(jiǎn)體中文互轉(zhuǎn)
gbk-trad GBK 簡(jiǎn)體中文與 Unicode 繁體中文互轉(zhuǎn)
若想在 GBK 與 Big5 之間互轉(zhuǎn), 請(qǐng)參考該模塊內(nèi)附的 b2g.pl 與 g2b.pl 兩支程序, 或在程序內(nèi)使用下列寫法:
use Encode::HanConvert;
$euc_cn = big5_to_gb($big5); # 從 Big5 轉(zhuǎn)為 GBK
$big5 = gb_to_big5($euc_cn); # 從 GBK 轉(zhuǎn)為 Big5
進(jìn)一步的信息
請(qǐng)參考 Perl 內(nèi)附的大量說(shuō)明文件 (不幸全是用英文寫的), 來(lái)學(xué)習(xí)更多關(guān)于 Perl 的知識(shí), 以及 Unicode 的使用方式. 不過(guò), 外部的資源相當(dāng)豐富:
提供 Perl 資源的網(wǎng)址
-
http://www.perl.com/
- Perl 的首頁(yè) (由歐萊禮公司維護(hù))
-
http://www.cpan.org/
- Perl 綜合典藏網(wǎng) (Comprehensive Perl Archive Network)
-
http://lists.perl.org/
- Perl 郵遞論壇一覽
學(xué)習(xí) Perl 的網(wǎng)址
-
http://www.oreilly.com.cn/html/perl.html
- 簡(jiǎn)體中文版的歐萊禮 Perl 書藉
Perl 使用者集會(huì)
-
http://www.pm.org/groups/asia.shtml#China
- 中國(guó) Perl 推廣組一覽
Unicode 相關(guān)網(wǎng)址
-
http://www.unicode.org/
- Unicode 學(xué)術(shù)學(xué)會(huì) (Unicode 標(biāo)準(zhǔn)的制定者)
-
http://www.cl.cam.ac.uk/%7Emgk25/unicode.html
- Unix/Linux 上的 UTF-8 及 Unicode 答客問(wèn)
SEE ALSO
the Encode manpage, the Encode::CN manpage, the encoding manpage, the perluniintro manpage, the perlunicode manpage
AUTHORS
Jarkko Hietaniemi <jhi@iki.fi>
Autrijus Tang (唐宗漢) <autrijus@autrijus.org>