Perl | Sjis.pm | EUCJP.pm | jacode.pl | Char.pm
404 Flag Not Found
The UTF8 flag was not found -- unless you need it.
UTF2ソフトウェアはUTF-8を扱うための Perl プログラムです。Sjisソフトウェアと同様のコンセプトによって Perl のマルチバイト文字対応を行います。つまり、外部コードであるUTF-8そのものを内部コードとして処理します。なお、ここでのUTF-8はRFC3629のUTF-8です。もしCESU-8(Compatibility Encoding Scheme for UTF-16: 8-Bit) あるいは Modified UTF-8 を扱いたい場合は OldUTF8ソフトウェア を使用することができます。
インストール方法
以下のファイルを C:\Perl\site\lib にコピーするとインストール完了です
使い方
スクリプト先頭に以下の記述をします。そうするとスクリプトをUTF-8で記述でき、Perlの動作もUTF-8による日本語文字列に対応するようになります。
use UTF2; # UTF8 ではないので注意!!
UTF2ソフトウェアの概要
Sjisソフトウェアと異なる点は大きく3つあります。
- マルチバイト文字の先行するバイト列
- Sjisの場合 [\x81-\x9F\xE0-\xFC] のところ (?:[\xC2-\xDF]|[\xE0-\xE0][\xA0-\xBF]|[\xE1-\xEC][\x80-\xBF]|[\xED-\xED][\x80-\x9F]|[\xEE-\xEF][\x80-\xBF]|[\xF0-\xF0][\x90-\xBF][\x80-\xBF]|[\xF1-\xF3][\x80-\xBF][\x80-\xBF]|[\xF4-\xF4][\x80-\x8F][\x80-\xBF]) になります
- マルチバイト文字の扱い
- 2バイト目以降の値が ASCII の値と重ならずメタ文字が出現しないため、エスケープが不要です
- 2バイト目以降に英字が出現しないため uc(), lc() 関数はそのまま利用できます
- マルチバイトアンカーリング処理
- 1バイト目と2バイト目以降の値が重ならないため、マルチバイトアンカーリング処理が不要です(対象データがUTF-8として正しく符号化されていることが前提です)
主な特徴
Perl関連の成功したソフトウェアからいいところをとってきました。
- 互換性: Perl4→Perl5 のように追加によって新機能を実現している
- 文字列の長さや文字の位置を示す単位は今までどおりオクテット
- 文字単位の関数は別の名前で新設(UTF2::length, UTF2::substr など)
- 制御性: JPerl のようにプログラマの意図を汲む
- バイト列だと思えばバイト列に、文字列だと思えば文字列になる
- UTF-8そのままの値を扱うことができる
- UTF8フラグがない
- オブジェクト指向は導入していない(これは利点!!)
- 可搬性: jcode.pl のように単体のPerlスクリプト
- 他に必要なモジュールがない
- perl5.00503でも実行することができる
- それなのにperl5.00503のXSに束縛されない
- 欠点: かわいいの間 違いでしょ♪
- Latin-1を扱えない(UTF8フラグを使わないようにした代償として)
- ひとつのスクリプト中のリテラル文字列としてLatin-1とUTF-8の両方を使用する需要がどうしても想像できません
関連情報