文字コードについて調べてみた
研究室で文字コードについてWikiに書いておけ、と言われたので、文字コードについて調べてみた。
use encoding
そのファイルは指定した文字コードで扱いますよ、という宣言をする。
例えば以下のようにすると、ファイルの保存の文字コードも、キーボードで入力する文字コードも全部euc-jpしなければエラーが出たりするようになる。
use encoding "euc-jp"; binmode STDERR, ":encoding(euc-jp)"; # 標準エラー出力の文字コード設定 binmode STDIN, ":encoding(euc-jp)"; # キーボード入力の文字コード設定 print "入力:" chomp($in = <STDIN>); print "出力:".$in;
ファイル入力のときも同じようにオープン済みのファイルハンドルをbinmodeで設定する。openの設定もあるけど、前に書いたのでここでは省略。
また、文字コードが違うファイルを読み込むとき。
use encoding "euc-jp"; binmode STDERR, ":encoding(euc-jp)"; # 標準エラー出力の文字コード設定 my $file = "text.txt"; # ファイルの文字コードはUTF8 open(IN,"<:encoding(utf8)",$file) || die; # UTF8のファイルをきちんと読み取る while(<IN>){ print $_; # 標準出力なのでeuc-jpに変換される }