みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

ファイル出力をUTF8NではなくてUTF8で行いたい

おせわになります。

Shift-JISで記述したPerlで、ファイル出力をしようとしています。
------------------------------------
#!/usr/local/bin/perl
use encoding 'shiftjis';

$hoge="ほげ"
open(OUT,">file.txt")
binmode OUT;
print OUT $hoge;
close(OUT);
------------------------------------
希望はUTF8での出力なのですが、UTF8Nで出力されてしまいます。
どのようにすればいいのかご教授よろしくお願いします。

投稿日時 - 2007-06-07 12:11:13

QNo.3064000

困ってます

質問者が選んだベストアンサー

binmode OUT をしないのなら

#!/usr/bin/perl
use strict;
use encoding 'shiftjis';

my $hoge = 'ほげ';

open OUT, '>:encoding(utf8)', 'file.txt' or die $!;

my $bom = "\x{feff}"; #BOM
print OUT $bom;

print OUT $hoge, "\n";
close OUT;

で警告なしにBOMをつけてファイルを作れます。

どうしても binmodeをする必要があるのなら

#!/usr/bin/perl
use strict;
use encoding 'shiftjis';

my $hoge = 'ほげ';

open OUT, '>', 'file.txt' or die $!;
binmode OUT;

my $bom = "\x{feff}"; #BOM
utf8::encode($bom);
print OUT $bom;

utf8::encode($hoge);
print OUT $hoge, "\n";
close OUT;

こんなところですか?
#utf-8フラグは良くわからん

投稿日時 - 2007-06-07 18:48:08

お礼

さっそくのご回答ありがとうございます。
おかげさまでひとつめの方法で無事解決することができました。
なぜそうなるのかはいまいち理解してませんが、おかげで助かりました。

ありがとうございました。

投稿日時 - 2007-06-07 20:33:00

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(1)

あなたにオススメの質問