NAME 

perlcn - 简体中文 Perl 指å—

DESCRIPTION 

欢迎æ¥åˆ° 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 资æºçš„网å€

<http://www.perl.com/>
Perl 的首页 (由欧莱礼公å¸ç»´æŠ¤)
<http://www.cpan.org/>
Perl 综åˆå…¸è—网 (Comprehensive Perl Archive Network)
<http://lists.perl.org/>
Perl 邮递论å›ä¸€è§ˆ

å­¦ä¹ Perl 的网å€

<http://www.oreilly.com.cn/html/perl.html>
简体中文版的欧莱礼 Perl 书藉

Perl 使用者集会 

<http://www.pm.org/groups/asia.shtml#China>
中国 Perl 推广组一览

Unicode 相关网倠

<http://www.unicode.org/>
Unicode 学术学会 (Unicode æ ‡å‡†çš„åˆ¶å®šè€…)
<http://www.cl.cam.ac.uk/%7Emgk25/unicode.html>
Unix/Linux 上的 UTF-8 åŠ Unicode 答客问

SEE ALSO 

Encode, Encode::CN, encoding, perluniintro, perlunicode

AUTHORS 

Jarkko Hietaniemi <jhi@iki.fi>

Autrijus Tang (å”宗汉) <autrijus@autrijus.org>