Encode

よく理解していなかったので、覚えたことを書いておく。

エンコード変換

入力されるファイルはutf-8で、Linux文字コードeuc-jp前提。

use strict;
use Encode;

open (my $fh, "<$ARGV[0]");
while(<$fh>) {
    chomp;
    Encode::from_to($_, "utf-8", "euc-jp");
    print $_."\n";
}
close($fh);
UTF8フラグ

普段はあまり意識しなくてよさそう。
perlは内部的にはUTF-8で文字を扱っていて、内部形式だとUTF8フラグがつくのだそう。

my $inner_string = Encode::decode("euc-jp", $euc-string);

euc-jpの文字を内部形式に戻す。

my $euc-string = Encode::encode("euc-jp", $inner_string);

内部形式の文字列をeuc-jpに変換する。


とりあえずこれだけ覚えておけば大丈夫、のはず。。


参考:http://www.rwds.net/kuroita/program/Perl_unicode.html#encoding