文字コードの宣言 - use utf8, use encoding

そのスクリプトファイルがUTF8フラグ付きである事、スクリプトファイルがどんな文字コードで書かれているかを宣言する。

効果

(1) スクリプト内の文字列をすべてUTF8フラグ付きにする。

(2) 標準入力と標準出力を指定した文字コードに変換する。

(3) その際、入力についてはUTF8フラグを付け、出力についてはUTF8フラグを落とす。

use utf8

 #!/usr/bin/perl
 use encoding 'utf8';

ではなく、

 #!/usr/bin/perl
 use utf8;

とすると、(1)のUTF8フラグ付きにする効果は変わらないが、(2)(3)の効果はない。

PerlIOレイヤー

(2)(3)の機能をPerlIOレイヤーと言う。標準入力・標準出力の文字コードを個別に設定する事も可能。この機能はuse encoding以外にもopen()等で使用できる。

スクリプト(EUC) → 標準出力(SJIS)

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

標準入力(EUC) → スクリプト(SJIS) → 標準出力(SJIS)

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

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

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS

Last-modified: 2011-08-08 (月) 06:23:23