此问题与之前发布的其他问题类似。但尝试所有组合没有任何工作。
我需要在Unicode Utf8中读取我的excel文件,我试图设置我的bom:
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}");
然而这是错误的并且说" 0xFEBBBF不是Unicode ......"
我发现的所有信息都表明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 :(得分:2)
物料清单是U + FEFF,而不是U + FEBBBF。取代
"\x{FEBBBF}"
以下任何一项:
chr(0xFEFF)
"\x{FEFF}"
"\N{U+FEFF}"
"\N{BOM}"
这将创建一个包含单个字符(FEFF
)的字符串,print
将根据请求使用UTF-8进行编码(EF BB BF
)。