我正在寻找正确的语法来从我已成功为UTF-8完成的UTF-16文本文件中删除BOM。请参阅下面的语法我尝试过:
$readline =~ s/^\N{ZERO WIDTH NO-BREAK SPACE}//;
$readline =~ s/^\N{BYTE ORDER MARK}//;
$readline =~ s/^\N{BOM}//;
$readline =~ s/^\x{FEFF}//;
$readline =~ s/^\0x{FEFF}//;
$readline =~ s/^\x{FE}\x{FF}//;
$readline =~ s/^\xFE\xFF//;
$readline =~ s/^\0xFE\0xFF//;
正如你所看到的那些是重复的,但我正在尝试任何我能找到的东西。要打开文件,我使用了编码功能。任何帮助将不胜感激。
答案 0 :(得分:3)
$readline
中的内容是什么?
如果你有UTF-16be,
s/^\xFE\xFF//
如果你有UTF-16le,
s/^\xFF\xFE//
如果您有Unicode代码点(解码文本),
s/^\x{FEFF}//
s/^\N{BOM}//
或者,您也可以使用File::BOM删除标记并解码流。