トップ   編集 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS   ログイン

UTF2.pm の変更点

[[Perl]] | [[install_japerl_Framework.bat]] | [[japerl.bat]] | [[jacode.pl]] | [[Char.pm]] | [[Perl-Exactly]] | [[Strict-Perl]] | [[Modern-Open]] | [[Fake-Our]]  | [[Fake-Encode]] | [[Stable-Module]] | [[SjisTk]] | [[DBD-mysqlPPrawSjis]] | [[DBD-PgPPSjis]] | [[Sjis.pm]] | [[EUCJP.pm]] | [[UTF2.pm]]

&size(28){''404 Flag Not Found''};

&color(red){    ''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ソフトウェア:http://search.cpan.org/dist/Char-OldUTF8/]] を使用することができます。

&size(20){''インストール方法''};

以下のファイルを C:\Perl\site\lib にコピーするとインストール完了です
-[[UTF2.pm 1.05 (ソースコードフィルタ):http://cpansearch.perl.org/src/INA/Char-UTF2-1.05/UTF2.pm]]
-[[Eutf2.pm 1.05 (ランタイムルーチン):http://cpansearch.perl.org/src/INA/Char-UTF2-1.05/Eutf2.pm]]
-[[UTF2.pm 1.08 (ソースコードフィルタ):http://cpansearch.perl.org/src/INA/Char-UTF2-1.08/UTF2.pm]]
-[[Eutf2.pm 1.08 (ランタイムルーチン):http://cpansearch.perl.org/src/INA/Char-UTF2-1.08/Eutf2.pm]]

&size(20){''使い方''};

スクリプト先頭に以下の記述をします。そうするとスクリプトをUTF-8で記述でき、Perlの動作もUTF-8による日本語文字列に対応するようになります。

 
 use UTF2; # UTF8 ではないので注意!!
 

&size(20){''UTF2ソフトウェアの概要''};

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]
  )
になります。

参考までに[[OldUTF8ソフトウェア:http://search.cpan.org/dist/Char-OldUTF8/]]の場合、初期のUTF-8なので
  (?:[\xC0-\xDF]|
     [\xE0-\xEF][\x80-\xBF]|
     [\xF0-\xF4][\x80-\xBF][\x80-\xBF]
  )
になります。

-マルチバイト文字の扱い
--2バイト目以降の値が ASCII の値と重ならずメタ文字が出現しないため、エスケープが不要です
-マルチバイトアンカーリング処理
--1バイト目と2バイト目以降の値が重ならないため、マルチバイトアンカーリング処理が不要です(対象データがUTF-8として正しく符号化されていることが前提です)

&size(20){''主な特徴''};

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の両方を使用する需要がどうしても想像できません

&size(20){''関連情報''};
-[[jacode.pl]] 文字コードの変換には jacode.pl が便利です
-[[Char.pm]] 文字コードに煩わされずに文字を扱いたいときに便利です
-[[Ruby on Perl(s):http://www.rubyist.net/~matz/slides/yapc2006/]]
-[[UTF-8フラグの立て方・降ろし方:http://www.rakunet.org/tsnet/TSabc/18/546.html]]
-[[Perl::utf8.pm:http://blonde.ddo.jp/object/glob.pl/2010/11/18/21/17/12]]