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