【发布时间】:2016-12-29 10:40:47
【问题描述】:
这个问题与之前发布的其他问题相似。但是尝试所有组合都不起作用。
我需要以 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}"); 但是这比我打算使用的空间要大。
提前感谢您能给我的任何帮助。
【问题讨论】:
-
BOM 是 U+FEFF,而不是 U+FEBBBF。
-
@ikegami U+FEFF 是 utf16 的代码,而不是 utf8 的代码
-
U+FEFF 表示“Unicode Code Point FEFF”,与UTF-8或UTF-16无关。
标签: perl csv unicode utf-8 hex