Manpages

NAME

perlcn − 簡 體 中 文 Perl 指 南

DESCRIPTION

歡 迎 來 到 Perl 的 天 地 !

從 5.8.0 版 開 始 , Perl 具 備 了 完 善 的 Unicode (統 一 碼 ) 支 援 , 也 連 帶 支 援 了 許 \[u591A]拉 丁 語 系 以 外 的 編 碼 方 式 ; CJK (中 日 韓 ) 便 是 其 中 的 一 部 份 . Unicode 是 國 際 性 的 標 準 , 試 圖 涵 蓋 \[u4E16]界 上 所 有 的 字 符 : 西 方 世 界 , 東 方 世 界 , 以 及 兩 者 間 的 一 切 (希 臘 文 , 敘 利 亞 文 , 亞 拉 伯 文 , 希 伯 來 文 , 印 度 文 , 印 地 安 文 , 等 等 ). 它 也 容 納 了 多 種 作 業 系 統 與 平 台 (如 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 [AT] iki.fi>

Autrijus Tang (唐 宗 漢 ) <autrijus [AT] autrijus.org>