[英語][日本語]
Last Modified:Sunday, 11-May-2008 03:16:47 JST
by Dan Kogai
Perl 5.8.0 より、Jcodeの全機能は Encode module を通じてPerlに標準装備となります。Jcodeのメンテナンスは旧Perlのために 今後も続けていく所存ですが、最新のPerlをお使いの方には、より高機能、高 性能、そしてなんといっても標準装備の Encode の方をお薦めします。
Jcode 2.0 より、お使いの Perl Version が 5.8.1 以降の場合は Encode の Wrapper として機能するようになりました。
この場合、Jcode.pm は付属モジュールを必要としないため、 jcode.pl の 場合と同様、Jcode.pm を Library Path に置くだけで利用できるようになり ます。
さらに今回、日本語podも付いてきます!HTML化したものはこちら。
それ以前のPerlをお使いの場合、Jcodeはver. 0.88と同じように機能します
は、さまざまな日本語文字コードをPerlで扱うためのModuleです。 jcode.pl-2.10 の全機能に加えて、
詳しくは Jcode.html (Jcode.pm をpod2htmlしたもの)を御覧下さい。
Changes を参照してください。さらに古い履歴に関してはChanges.ver0Xを参照して下さい。
Jcode.pmの OpenLab プロジェクト化にともない、Jcode.pmのためのMLが新設されました。
簡単です。
ネットワークの帯域幅を考えれば、こちらがおすすめです。CPANモジュールはバージョン番号のチェックも行ってくれるので、常に同じ方法で最新版をインストールすることができます。
$ perl -MCPAN -e shell
http://www.ring.gr.jp/pub/lang/perl/CPAN/
をお試し下さいませ。
CPANのアップデートが待てない貴女貴兄はこちら。
"perl Makefile.PL"以外の方法で(主にMacおよびWindows)、0.50以前のバージョンをインストールした方は、手で@INCの中のJcode.pmおよびJcodeディレクトリーを削除からインストールしてください。
新しいJcodeでは、Unicode変換が必要なときにまずJcode::Unicodeをロードしようとし、それが駄目な場合(MacやWindows、そしてXSがサポートされていない環境では)Jcode::Unicode::NoXSをロードします。ところがJcode/Unicode.pmが残っていると、Jcode::Unicode::NoXS.pmではなく、そちらがロードされてしまうわけです。お手数ですがよろしくお願いいたします。
here's some.
ほとんどの場合、これで十分なはずです。
perl -MJcode -i.bak -lpe 'Jcode::convert(\$_,
"charcode")' files...
or
perl -MJcode -i.bak -lpe 'jcode(\$_)->charcode'
files...
original files are ".bak"
perl -MJcode -00lne 'print
jcode($_)->mime_decode->charcode' $mail
すでに Encode が出て些か古い内容になっていますが、そのまま記載しておきます。
日本でPerlをお使いの方のほとんどすべては、なんらかの形で jcode.pl のお世話になった 経験があると思います。jcode.pl には必要な機能のほとんどが揃っています が、Perl5の時代になってやや古さを否めなくなってきています。jcode.plの 不満点として、以下をサポートしていないことが挙げられます。
jcode.pl はPerl5でも動くことは動きますが、ほとんどの関数にはtypeglobか参照をわたさなければならないので、ちょっと初心者にはとっつきにくいところがありますし、なんといってもPerl5のOOPが使えません。
jcode::convert(\$str, 'jis', jcode::getcode(\$str), "z");
;
print $str
と書く代わりに、
print jcode($str)->h2z->jis
;
と書けた方がいいでしょ?
RFC1522
によると、Mailなどのヘッダーに日本語を使うには、iso-2022-jpの文字列にするだけでは十分ではなく、さらにそれをbase64でエンコードした上で
=?ISO-2022-JP?B?
と ?=
で括らなければなりません。jcode.plにはこの機能がありません。
$header = jcode($str)->mime_decode;
とできたらいいと思いませんか?
私はUnicodeはそんなに好きではありませんが、それでも未来がそこにあるのは否めません。