ivaneeo's blog

          自由的力量,自由的生活。

            BlogJava :: 首頁(yè) :: 聯(lián)系 :: 聚合  :: 管理
            669 Posts :: 0 Stories :: 64 Comments :: 0 Trackbacks

          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>

          posted on 2006-04-06 17:19 ivaneeo 閱讀(2722) 評(píng)論(0)  編輯  收藏 所屬分類: perl-殺雞就要用牛刀
          主站蜘蛛池模板: 莫力| 阿勒泰市| 阳江市| 珲春市| 莱州市| 永德县| 兴和县| 望城县| 石河子市| 广宗县| 汤原县| 阿城市| 常熟市| 阿尔山市| 稻城县| 巫山县| 资源县| 株洲县| 安达市| 玉门市| 色达县| 乐清市| 峨山| 开江县| 全椒县| 旬阳县| 东兰县| 沈阳市| 水富县| 岢岚县| 仙桃市| 临泽县| 北海市| 古浪县| 辽宁省| 高要市| 美姑县| 阿坝县| 惠东县| 临桂县| 于都县|