perlをUTF-8で書く [perl]
Cygwinで使用する文字コードをUTF-8にした。perlもUTF-8で書いて、Linuxとの互換性を確保する。
google先生で勉強したところ、以下4点を守れば、文字化けに困ることはなさそうだ。
perlスクリプトはutf-8でファイル保存しろ!
外部から読み込んだ文字列は、内部コードにdecodeしろ!
文字列を外部に出力するときは、encodeしろ!
ファイルを読み込むときは、変換元の文字コードを指定して、encodingしろ!
具体的に以下にまとめる。
モジュールの宣言
外部からの文字列を変換
文字列を外部に出力する(decodeした文字列に対して実施)
ァイルを読み込むときは、変換元の文字コードを指定して、encoding
google先生で勉強したところ、以下4点を守れば、文字化けに困ることはなさそうだ。
perlスクリプトはutf-8でファイル保存しろ!
外部から読み込んだ文字列は、内部コードにdecodeしろ!
文字列を外部に出力するときは、encodeしろ!
ファイルを読み込むときは、変換元の文字コードを指定して、encodingしろ!
具体的に以下にまとめる。
モジュールの宣言
#!/usr/bin/perl use utf8; use Encode;
外部からの文字列を変換
#UTF-8文字列を読み込む場合
$internal_value = decode('utf-8', $value);
#ウィンドウズの文字列を読み込む場合 ※shift-JISでないことに注意!
$internal_value = decode('cp932', $value);
#euc-jp文字列を読み込む場合
$internal_value = decode('euc-jp', $value);
文字列を外部に出力する(decodeした文字列に対して実施)
#UTF-8で出力する場合
print encode('utf-8', $internal_value);
#ウィンドウズ向けに出力する場合 ※shift-JISでないことに注意!
print encode('cp932', $internal_value);
#euc-jpで出力する場合
print encode('euc-jp', $internal_value);
ァイルを読み込むときは、変換元の文字コードを指定して、encoding
#ウィンドウズで作成したshift-JISファイルを読み込む場合 ※shift-JISでないことに注意! open(IN,"<:encoding(cp932)", $ARGV[0]); @recs=; close(IN);
2012-02-05 19:36
nice!(0)
コメント(0)
トラックバック(0)
コメント 0