decadence

個人のメモ帳

文字の扱い

  • perlの内部で取り扱う文字列は内部文字列として扱っている
  • 内部文字列としてはflagged UTF8というものを用いている
  • decode_utf8($str)を用いれば内部文字列に変換する事が出来る
  • use utf8を用いた場合には文字列リテラルは内部文字列を作り出す
  • 逆にバイナリ表現に戻す場合(DBに戻す場合など)にはencode(ENCODING, $str)を用いる
  • 内部文字列を直接printしようとした際:'Wide character in print ~'→encodeを行う必要がある
  • read や<$fh>はバイナリ列を取り扱う
  • 試して無いけど出来るのかな
open時にエンコーディングを指定する
open(my $fh, '<:encoding(utf8)', $path) or die;


参考:VOYAGE GROUP エンジニアブログ : あなたにも今日こそPerlの文字化けが理解できるたった一つの原則