UTF8フラグの宣言

use encodingプラグマ(もしくはuse utf8プラグマ)を使って、そのソースコードがUTF8フラグ付きであること(加えて、そのソースコードがどんな文字コードでかかれているか)を宣言する。

効果

  • Perlのソースコード自体の文字列をUTF8フラグ付きにする。
  • 標準入力と標準出力を指定した文字コードに変換する。
  • その際、入力についてはUTF8フラグを付け、出力についてはUTF8フラグを落とす。

使いどころ

Perlのソースコード内に日本語を書いて、それを加工するような時。 下のプログラムはuse encodingを記述しないと「あ」は表示されず、化ける。

 use encoding 'euc-jp';
 $text = "あああ";
 print  substr($text,0,1),"\n";

注意点

  • ファイルの入出力については効果がない。それにはuse openなどを使う。
  • (標準出力に)print()する文字列はUTF8フラグがあってはならない(Perlがwarningを出す)。そのため、出力時にUTF8を落とす必要がある。

文字コードの変換

ソースコード(EUC) → 標準出力(SJIS)

 use encoding 'euc-jp', STDOUT => 'shift_jis';
 $text = '花鳥風月';
 @chars = split '',$text;
 foreach $c (@chars){
     print $c,"\n";
 }

標準入力(EUC) → ソースコード(SJIS) → 標準出力(SJIS)

EUCなターミナルから文字を入力すると、ターミナルにはSJISな文字が帰ってくる。

 use encoding 'shiftjis', STDIN=>'euc-jp';
 while (<>) {
     ($char) = split '', $_;
     print $char,"\n";
 }

use utf8

use utf8は、use encoding 'utf8'と同じ意味。


トップ   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS