□迎□到 Perl 的天地!
□ 5.8.0 版□始, Perl 具□了完善的 Unicode (□□□) 支援, 也□□支援了□e多拉丁□系以外的□□方式; CJK (中日□) 便是其中的一部份. Unicode 是□□性的□□, □□涵□e世界上所有的字符: 西方世界, □方世界, 以及□者□的一切 (希□文, □利□文, 阿拉伯文, 希伯□文, 印度文, 印地安文, 等等). 它也容□了多□作□系□□平□ (如 PC 及□金塔).
Perl 本身以 Unicode □行操作. □表示 Perl □部的字串□料可用 Unicode 表示; Perl 的函式□算符 (例如正□表示式比□) 也能□ Unicode □行操作. 在□入及□出□, □了□理以 Unicode 之前的□□方式□存的□料, Perl 提供了 Encode □□模□, 可以□你□易地□取及□入□有的□□□料.
Encode 延伸模□支援下列正□中文的□□方式 ('big5' 表示 'big5-eten'):
big5-eten Big5 □□ (含倚天延伸字形)
big5-hkscs Big5 + 香港外字集, 2001 年版
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';
print length("□□"); # 2 (□引□表示字符)
print length('□□'); # 4 (□引□表示位元□)
print index("□□教□", "彖□"); # -1 (不包含此子字串)
print index('□□教□', '彖□'); # 1 (□第二□位元□□始)
在最後一列例子□,
"□"
的第二□位元□□
"□"
的第一□位元□□合成
Big5 □的 "彖"; "□"
的第二□位元□□□
"教"
的第一□位元□□合成
"□". □解□了以前 Big5
□比□□理上常□的□□.
□外的中文□□
如果需要更多的中文□□, 可以□ CPAN (<http://www.cpan.org/>) 下□ Encode::HanExtra 模□. 它目前提供下列□□方式:
cccii 1980 年文建□的中文□□交□□
euc-tw Unix 延伸字符集, 包含 CNS11643 平面 1-7
big5plus 中文□位化技□推□基金□的 Big5+
big5ext 中文□位化技□推□基金□的 Big5e
另外, 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 使用者集□
Unicode 相□□址
中文化□□
Encode, Encode::TW, encoding, perluniintro, perlunicode
Jarkko Hietaniemi <jhi@iki.fi>
Autrijus Tang (唐宗□) <autrijus@autrijus.org>