用Perl从字符串中删除UTF-16 BOM



我正在寻找正确的语法,以从我成功完成的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/^x{FEFF}//;
$readline =~ s/^x{FE}x{FF}//;
$readline =~ s/^xFExFF//;
$readline =~ s/^xFExFF//;

您可以看到这些是重复的,但是我正在尝试任何我能找到的东西。要打开文件,我使用了编码功能。任何帮助将不胜感激。

$readline中有什么?

如果您有UTF-16BE,

s/^xFExFF//

如果您有UTF-16LE,

s/^xFFxFE//

如果您有Unicode代码点(解码文本),

s/^x{FEFF}//
s/^N{BOM}//

另外,您也可以使用file :: bom删除标记并解码流。

最新更新