NAME

Encode561.pm - Encode::from_to compatible for Perl 5.6.x and 5.005


SYNOPSIS

    use Encode561;
    my $text = "Hello, World!\n";
    Encode561::from_to( $text, "utf8", "cp932" );
    print $text;


DESCRIPTION

Encode.pm は日本語だけでなく多言語の変換に有用ですが、 Perl 5.8.x 以降でしか利用できません。 しかし、サーバ運用上、どうしても Perl 5.005 や Perl 5.6.x といった 古いバージョンのまま稼動してるマシンも多いと思います。

Jcode.pm や Unicode::Map でも組み合わせることで Encode.pm と同等の処理も実現できまうが、 インターフェースが異なるため、プログラムが複雑になってしまいます。

Encode561.pm は、Encode::from_to 関数と同等の処理を行う関数 Encode561::from_to 関数を提供します。

Perl 5.005 および 5.6.x のサーバ上で Encode561.pm を利用して 開発したプログラムを、Perl 5.8.x のサーバで本来の Encode.pm を 利用して稼動させることが可能になります。

また、Perl 5.8.x 上でも Encode561.pm を利用することも可能です。 しかし、Encode.pm 本体を利用したほうが処理も速いでしょうから、 プログラム中の『Encode561』を『Encode』と書き換えたほうがいいかと 思われます。


USAGE

from_to 関数の引数の書式は、Encode.pm のそれと同じです。

    [$length =] Encode561::from_to($octets, FROM_ENC, TO_ENC [, CHECK])

$octets には、変換したい文字列を指定します。 FROM_ENC には、変換前の現在の文字コードを指定します。 TO_ENC には、変換先の文字コードを指定します。 第4引数(CHECK)は、指定されていても無視されます。 $length は、変換後のバイト数が返ります。


CHARSETS

Encode561.pm では下記の文字コードを利用できます。

・内蔵ルーチンにより対応するコード:

    UTF-8
    Latin1 (ISO-8859-1,ASCII)

・Jcode.pm により対応するコード:

    Shift_JIS   (CP932)
    EUC_JP      (x-euc-jp)
    JIS         (ISO-2022-JP)

・Unicode::Map により対応する主なコード:

    EUC-KR (CP949)
    GB2312 (CP936)
    BIG5   (CP950)

※その他、Unicode::Map がサポートするコードは基本的に利用できます。  Shift_JIS と CP932 の文字セット定義は本来異なりますが、簡便のため、  同一視しています。(Jcode.pm における sjis として処理します)

・対応しないコード:

    UCS2
    UTF-16

※Encode561.pm では、16bitコードには対応しません。  8bitコードまたは8bit×可変長コードのみ対応しています。


PATCHS

Jcode.pm および Unicode::Map では、Unicode から他のコードに変換時に 出力先文字セットで表現できない文字は「??」や「〓」に変換されたり、 削除されてしまいます。 Encode.pm ではそれを回避する Encode::FB_XMLCREF オプションがあります。 Jcode.pm および Unicode::Map で FB_XMLCREF 相当の機能を実現する パッチプログラム(↓下記)を予め適用しておくことをお勧めします。 http://www.kawa.net/works/jcode/uni-escape.html 該当文字を &#xHHHH; の形式にエスケープすることで、文字化けを防ぎます。


TODO

Encode561.pm を用いることで Encode.pm がない環境(=5.6.1以下)でも Encode.pm に近い処理を実現できますが、しかし反面、 Jcode.pm または Unicode::Map は必須となってしまいます。 レンタルサーバ等でモジュールを追加インストールできず、 jcode.pl しか利用できない環境においても Shift_JIS〜EUC-JP〜ISO-2022-JP 間の変換に限れば 利用できるように拡張するのも、需要があるかもしれませんね。


COPYRIGHT

    Copyright 2004 Kawasaki Yusuke <u-suke [at] kawa.net>
    http://www.kawa.net/