将BOM设置为Unicode U代码UTF8 perl

时间:2016-08-22 19:05:46

标签: perl csv unicode utf-8 hex

此问题与之前发布的其他问题类似。但尝试所有组合没有任何工作。

我需要在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}");但是这比我的意思更多。 提前感谢您提供的任何帮助。

1 个答案:

答案 0 :(得分:2)

物料清单是U + FEFF,而不是U + FEBBBF。取代

"\x{FEBBBF}"

以下任何一项:

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

这将创建一个包含单个字符(FEFF)的字符串,print将根据请求使用UTF-8进行编码(EF BB BF)。