2016-08-22 310 views
0

該問題與之前發佈的其他問題類似。然而嘗試所有的組合都沒有用。將BOM設置爲Unicode U碼UTF8 perl

我需要讓我的excel文件中的Unicode UTF8讀,我試圖把我的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}");

然而,這得到一個errror並說「0xFEBBBF不統一......」

我找到的所有信息表明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是utf16的代碼,不適用於utf8 –

+1

U + FEFF的意思是「Unicode代碼點FEFF」,它與UTF-8或UTF-16無關。 – ikegami

回答

2

BOM是U + FEFF,而不是U + FEBBBF。與以下中的任何一個取代

"\x{FEBBBF}" 

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

這將創建一個字符串一個字符(FEFF),其作爲請求(EF BB BFprint將編碼使用UTF-8。

+0

這應該是爲utf-16編碼,但我正在尋找utf8我說的是如何工作,當我做前兩個選項,你reccomended,但我的意思是使用8位而不是16 –

+0

你試過嗎?你會看到你錯了。請參閱添加的段落。 – ikegami

相關問題