2016-08-22 13 views
0

この質問は以前に投稿された他の質問と似ています。しかし、すべての組み合わせを試しても何も動いていない。 「... 0xFEBBBFがUnicodeではない」BOMをUnicodeに設定するUコードUTF8 perl

my $csv = Text::CSV->new ({binary=>1, eol =>$/}) or die "cannot use CSV: ".Text::CSV->error_diag(); open my $csvFile, ">:encoding(UTF-8)", "teht.csv" or die "teht.csv: $!"; print($csvFile "\x{FEBBBF}");

しかし、これはerrrorを取得していることを述べている:私は私のExcelファイルは、Unicode UTF8に読まれている必要があり

は、私は私のBOMを設定しようとしています

私が見つけたすべての情報は、utf8のコードが print($csvFile "\N{U+FEBBBF}")または... "\xFE\xBB\xBF"またはそれに類するものであることを示しています。

Is it possible to force Excel recognize UTF-8 CSV files automatically?はこれを何度も言います。

https://stackoverflow.com/a/22711105/6557829が別のソースです。

これまでのところ、私は実際には同じ印刷ステートメントで作業するためにUTF-16を入手することができました:print($csvFile "\N{U+FEFF}");しかし、それは私が使用するよりも広いスペースです。 お手数をおかけしていただきありがとうございます。

+0

BOMはU + FEFFであり、U + FEBBBFではありません。 – ikegami

+0

@ikegami U + FEFFは、utf8のコードではありません。 –

+1

U + FEFFは、「UnicodeコードポイントFEFF」を意味し、UTF-8またはUTF-16とは関係ありません。 – ikegami

答えて

2

BOMは、U + FEBBFではなくU + FEFFです。次のいずれかに

"\x{FEBBBF}" 

を交換してください:

chr(0xFEFF) 
"\x{FEFF}" 
"\N{U+FEFF}" 
"\N{BOM}" 

これはprintは(EF BB BF)要求としてUTF-8を使用してエンコードする単一の文字(FEFF)、文字列を作成します。

+0

utf-16コーディングでなければなりませんが、私はutf8を探しています。最初の2つのオプションのいずれかを実行したときにどのように動作するかを言っていましたが、8ビットではない16 –

+0

試しましたか?あなたはあなたが間違っているのを見たでしょう。追加された段落を参照してください。 – ikegami

関連する問題