昔はjcode.plとかJcode.pmとか、直感的な文字コード変換モジュールがあったのですが、新しめのPerl*1では標準でEncodeが使えるようになってます。内部文字表現をJavaみたいにUnicodeにしたことに伴い・・・とかですかね。
ちょっととっつきにくい感じがしますが、
と考えれば分かるかな。指定した文字コードに変換するのがエンコード、内部表現に変換するのがデコードみたいな。
とりあえずサンプル。
use Encode; use Encode::Guess qw/euc-jp shiftjis 7bit-jis/; use strict; my $input_str = shift; my $decoder = Encode::Guess->guess($input_str); print "name: " . $decoder->name() . "\n"; my $encoded_str = encode('euc-jp', decode("Guess", $input_str)); print "$encoded_str\n";
実行結果
$ perl encode.pl あいうえお name: shiftjis 、「、、、ヲ、ィ、ェ
*1:というほど新しくもないですけどね