GNU/Linux |
CentOS 5.2 |
|
![]() |
perlcn(1) |
![]() |
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
èµæºçç½å
<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 ç客é®
Encode, Encode::CN, encoding, perluniintro, perlunicode
Jarkko Hietaniemi <jhi@iki.fi>
Autrijus Tang (å宿±) <autrijus@autrijus.org>
![]() |
perlcn(1) | ![]() |