xref: /openbsd-src/gnu/usr.bin/perl/README.tw (revision f2a19305cfc49ea4d1a5feb55cd6c283c6f1e031)
1*f2a19305Safresh1# vim: syntax=pod
255745691Smillert
3898184e3Ssthen如果你用一般的文字編輯器閱覽這份文件, 請忽略文中奇特的註記字符.
4898184e3Ssthen這份文件是以 POD (簡明文件格式) 寫成; 這種格式是為了能讓人直接讀取,
5898184e3Ssthen而特別設計的. 關於此格式的進一步資訊, 請參考 perlpod 線上文件.
655745691Smillert
7*f2a19305Safresh1=encoding utf8
8*f2a19305Safresh1
955745691Smillert=head1 NAME
1055745691Smillert
11898184e3Ssthenperltw - 正體中文 Perl 指南
1255745691Smillert
1355745691Smillert=head1 DESCRIPTION
1455745691Smillert
15898184e3Ssthen歡迎來到 Perl 的天地!
1655745691Smillert
17898184e3Ssthen從 5.8.0 版開始, Perl 具備了完善的 Unicode (萬國碼) 支援,
18898184e3Ssthen也連帶支援了許多拉丁語系以外的編碼方式; CJK (中日韓) 便是其中的一部份.
19898184e3SsthenUnicode 是國際性的標準, 試圖涵蓋世界上所有的字符: 西方世界, 東方世界,
20898184e3Ssthen以及兩者間的一切 (希臘文, 敘利亞文, 阿拉伯文, 希伯來文, 印度文,
21898184e3Ssthen印地安文, 等等). 它也容納了多種作業系統與平臺 (如 PC 及麥金塔).
2255745691Smillert
23898184e3SsthenPerl 本身以 Unicode 進行操作. 這表示 Perl 內部的字串資料可用 Unicode
24898184e3Ssthen表示; Perl 的函式與算符 (例如正規表示式比對) 也能對 Unicode 進行操作.
25898184e3Ssthen在輸入及輸出時, 為了處理以 Unicode 之前的編碼方式儲存的資料, Perl
26898184e3Ssthen提供了 Encode 這個模組, 可以讓你輕易地讀取及寫入舊有的編碼資料.
2755745691Smillert
28898184e3SsthenEncode 延伸模組支援下列正體中文的編碼方式 ('big5' 表示 'big5-eten'):
2955745691Smillert
30898184e3Ssthen    big5-eten	Big5 編碼 (含倚天延伸字形)
31898184e3Ssthen    big5-hkscs	Big5 + 香港外字集, 2001 年版
32898184e3Ssthen    cp950	字碼頁 950 (Big5 + 微軟添加的字符)
3355745691Smillert
34898184e3Ssthen舉例來說, 將 Big5 編碼的檔案轉成 Unicode, 祗需鍵入下列指令:
3555745691Smillert
366fb12b70Safresh1    perl -MEncode -pe '$_= encode( utf8 => decode( big5 => $_ ) )' \
376fb12b70Safresh1      < file.big5 > file.utf8
3855745691Smillert
39898184e3SsthenPerl 也內附了 "piconv", 一支完全以 Perl 寫成的字符轉換工具程式, 用法如下:
4055745691Smillert
4155745691Smillert    piconv -f big5 -t utf8 < file.big5 > file.utf8
4255745691Smillert    piconv -f utf8 -t big5 < file.utf8 > file.big5
4355745691Smillert
446fb12b70Safresh1另外,若程式碼本身以 utf8 編碼儲存,配合使用 utf8 模組,可讓程式碼中字串以及其運
456fb12b70Safresh1算皆以字符為單位,而不以位元為單位,如下所示:
4655745691Smillert
4755745691Smillert    #!/usr/bin/env perl
486fb12b70Safresh1    use utf8;
496fb12b70Safresh1    print length("駱駝");	     #  2 (不是 6)
506fb12b70Safresh1    print index("諄諄教誨", "教誨"); #  2 (從 0 起算第 2 個字符)
5155745691Smillert
5255745691Smillert
53898184e3Ssthen=head2 額外的中文編碼
5455745691Smillert
55de8cc8edSafresh1如果需要更多的中文編碼, 可以從 CPAN (L<https://www.cpan.org/>) 下載
56898184e3SsthenEncode::HanExtra 模組. 它目前提供下列編碼方式:
5755745691Smillert
58898184e3Ssthen    cccii	1980 年文建會的中文資訊交換碼
59898184e3Ssthen    euc-tw	Unix 延伸字符集, 包含 CNS11643 平面 1-7
60898184e3Ssthen    big5plus	中文數位化技術推廣基金會的 Big5+
61898184e3Ssthen    big5ext	中文數位化技術推廣基金會的 Big5e
6255745691Smillert
63898184e3Ssthen另外, Encode::HanConvert 模組則提供了簡繁轉換用的兩種編碼:
6455745691Smillert
65898184e3Ssthen    big5-simp	Big5 正體中文與 Unicode 簡體中文互轉
66898184e3Ssthen    gbk-trad	GBK 簡體中文與 Unicode 正體中文互轉
6755745691Smillert
68898184e3Ssthen若想在 GBK 與 Big5 之間互轉, 請參考該模組內附的 b2g.plg2b.pl 兩支程式,
69898184e3Ssthen或在程式內使用下列寫法:
7055745691Smillert
7155745691Smillert    use Encode::HanConvert;
72898184e3Ssthen    $euc_cn = big5_to_gb($big5); # 從 Big5 轉為 GBK
73898184e3Ssthen    $big5 = gb_to_big5($euc_cn); # 從 GBK 轉為 Big5
7455745691Smillert
75898184e3Ssthen=head2 進一步的資訊
7655745691Smillert
77898184e3Ssthen請參考 Perl 內附的大量說明文件 (不幸全是用英文寫的), 來學習更多關於
78898184e3SsthenPerl 的知識, 以及 Unicode 的使用方式. 不過, 外部的資源相當豐富:
7955745691Smillert
80898184e3Ssthen=head2 提供 Perl 資源的網址
8155745691Smillert
8255745691Smillert=over 4
8355745691Smillert
84de8cc8edSafresh1=item L<https://www.perl.org/>
8555745691Smillert
86de8cc8edSafresh1Perl 的首頁
8755745691Smillert
88de8cc8edSafresh1=item L<https://www.perl.com/>
89de8cc8edSafresh1
90de8cc8edSafresh1由 Perl 基金會所營運的文章輯錄
91de8cc8edSafresh1
92de8cc8edSafresh1=item L<https://www.cpan.org/>
9355745691Smillert
94898184e3SsthenPerl 綜合典藏網 (Comprehensive Perl Archive Network)
9555745691Smillert
96de8cc8edSafresh1=item L<https://lists.perl.org/>
9755745691Smillert
98898184e3SsthenPerl 郵遞論壇一覽
9955745691Smillert
10055745691Smillert=back
10155745691Smillert
102898184e3Ssthen=head2 學習 Perl 的網址
10355745691Smillert
10455745691Smillert=over 4
10555745691Smillert
106256a93a4Safresh1=item L<http://www.oreilly.com.cn/index.php?func=booklist&cat=68>
10755745691Smillert
108898184e3Ssthen正體中文版的歐萊禮 Perl 書藉
10955745691Smillert
11055745691Smillert=back
11155745691Smillert
112898184e3Ssthen=head2 Perl 使用者集會
11355745691Smillert
11455745691Smillert=over 4
11555745691Smillert
116de8cc8edSafresh1=item L<https://www.pm.org/groups/taiwan.html>
11755745691Smillert
118898184e3Ssthen臺灣 Perl 推廣組一覽
11955745691Smillert
120256a93a4Safresh1=item L<irc://chat.freenode.org/#perl.tw>
12155745691Smillert
122898184e3SsthenPerl.tw 線上聊天室
12355745691Smillert
12455745691Smillert=back
12555745691Smillert
126898184e3Ssthen=head2 Unicode 相關網址
12755745691Smillert
12855745691Smillert=over 4
12955745691Smillert
130de8cc8edSafresh1=item L<https://www.unicode.org/>
13155745691Smillert
132898184e3SsthenUnicode 學術學會 (Unicode 標準的制定者)
13355745691Smillert
13455745691Smillert=item L<http://www.cl.cam.ac.uk/%7Emgk25/unicode.html>
13555745691Smillert
136898184e3SsthenUnix/Linux 上的 UTF-8 及 Unicode 答客問
13755745691Smillert
13855745691Smillert=back
13955745691Smillert
140898184e3Ssthen=head2 中文化資訊
14155745691Smillert
14255745691Smillert=over 4
14355745691Smillert
144898184e3Ssthen=item 中文化軟體聯盟
14555745691Smillert
14655745691SmillertL<http://www.cpatch.org/>
14755745691Smillert
14855745691Smillert=back
14955745691Smillert
15055745691Smillert=head1 SEE ALSO
15155745691Smillert
1526fb12b70Safresh1L<Encode>, L<Encode::TW>, L<perluniintro>, L<perlunicode>
15355745691Smillert
15455745691Smillert=head1 AUTHORS
15555745691Smillert
15655745691SmillertJarkko Hietaniemi E<lt>jhi@iki.fiE<gt>
15755745691Smillert
158898184e3SsthenAudrey Tang (唐鳳) E<lt>audreyt@audreyt.orgE<gt>
15955745691Smillert
16055745691Smillert=cut
161