プログラミング基礎 I
第九回 (2005年 6月 13日):
日本語の文字と文書の処理
© 2005 Martin
J. Dürst 青山学院大学
先週の演習・宿題
- ローマ字表記を「ワープロ式」や訓令式からヘボン式へ変換するプログラムを作る
- 他に正規表現を使うプログラムを作る
ヘボン式ローマ字表記
ヘボン式の主な特徴
- し: shi
- しゃ、しょ、しゅ: sha, sho, shu
- ふ: fu
- じ、じゃ、じょ、じゅ: ji, ja, jo, ju
- つ、づ: tsu, zu
- ち、ちゃ、ちょ、ちゅ: chi, cha, cho, chu
- ぢ、ぢゃ、ぢょ、ぢゅ: ji, ja, jo, ju
コンピュータでの文字の扱い方
- 文字をコンピュータ内に表すには数字が使われる
- ローマ字など英語に必要な基本的な文字は (IBM
の大型計算機以外)
どのコンピュータでも同じ番号が使われる
- 番号の付け方は「符号化」と言って、ローマ字の一般的な符号化は
(US-)ASCII という
- 文字の数が少ないので、一文字ごとにコンピュータの一番小さいメモリの単位
(バイト) 一つで足りる
日本語の文字の扱い方
- 文字の数が多いので一バイトでは足りない
- 従来に日本語には三つの符号化の方法が使われている:
- 「JIS」(電子メール、正式には iso-2022-jp)
- 「SJIS」(PC, Mac、正式には Shift_jis)
- 「EUC」(Unix 系システム、正式には euc-jp)
- 処理が複雑
- 国ごとの符号化には限界がある
ユニコードとは
- 世界の文字全てを同時に扱える
- 企業団体である Unicode Consortium と ISO/IEC (国際標準)
が同時開発
- 勿論日本語に必要な文字 (漢字、かななど)
も含まれている
- 従来の符号化の経験を踏まえて、処理が簡単
- 用途によって二つの符号化: UTF-8 と UTF-16
Perl と世界の文字
- 元々は英語しか処理できなかった
- 日本語専用のバージョンも存在した (jperl)
- 最近のバージョン (5.6系と5.8系)
ではユニコードの符号化である UTF-8 が導入
- まだまだ不完全な面がある
UTF-8 のファイルの作り方と読み方
作り方 (プログラムファイル、入力のファイル):
- notepad2 を開く(既にあるファイルを開けてもよい)
- 忘れずに「ファイル」→「encoding」→「UTF-8」を設定する
- ファイルに日本語等を入力する
- ファイルを保存する
読み方 (出力のファイル):
Perl で UTF-8 を使う
Perl のプログラムの頭に次のことを書く:
Perl 5.6.x (教室など) の場合:
use utf8;
Perl 5.8.x の場合:
use utf8;
binmode(STDIN, ":utf8");
binmode(STDOUT, ":utf8");
use open ':utf8';
演習
- 今までのプログラムを英語から日本語に変換する
- 先週の単語のリストをローマ字だけではなくて、かなも追加する