强制在Perl文件输出中使用UTF-8字节顺序标记

Car*_*ard 9 perl utf-8

我正在使用Perl写出一个CSV文件.进入CSV的数据包含Unicode字符.我正在使用以下内容写出CSV:

#OPEN THE FILE FOR WRITE
open(my $fh, ">:utf8", "rpt-".$datestring.".csv")
or die "cannot open < rpt.csv: $!";
Run Code Online (Sandbox Code Playgroud)

这是在文件中正确写入字符,但似乎不包括UTF8字节顺序标记.这反过来又会导致我的用户试图在Excel中打开文件.有没有办法强制写入字节顺序标记?

我尝试了以下方式:

print $fh "\x{EFBBBF};
Run Code Online (Sandbox Code Playgroud)

我最后在文件的顶部乱码.任何帮助将不胜感激.

Eri*_*ikR 13

试着这样做:

print $fh chr(65279);
Run Code Online (Sandbox Code Playgroud)

打开文件后.

  • `使用File :: BOM(); 打开我的$ fh,'>:utf8:via(File :: BOM)',...``将更加清晰. (10认同)
  • `print $ fh chr(0xFEFF);`会更清楚. (8认同)
  • @Cosmicnet:否:所有UTF字符集的BOM都使用相同的代码点.将产生差异的是文件句柄上启用的编码层.在问题中的`open`调用中查看`:utf8`. (2认同)