最新消息:用了几年共享空间,想想还是试试VPS。终于把站放到lVPS上了,因为水平有限,所以断线率估计要比以前高。

C#删除文件中字节顺序标记(BOM)的方法

CSharp 宇托 971浏览 暂无评论

最近做一个项目,发现解析XML文件时有时出错有时不出错。查了一下原因,发现我的XML文件编码都是UTF-8的。出错时的XML文件是带字节顺序标记(BOM)的,不错的是不带的。

于是,我就在想,是不是用一个通用方法来去掉字节顺序标记(BOM)。因为我的XML文件比较小,所以我是直接把它读取到一个字符串,然后再做其它处理的。

去掉字节顺序标记(BOM)的方法很简单,判断字符串是不是以去掉字节顺序标记(BOM)开头,如果是的话,去掉字节顺序标记(BOM)就行。

其代码如下:

C#
public static string RemoveBom(String desc, Encoding encode)
{
	string bomString = encode.GetString(encode.GetPreamble());
    if (!string.IsNullOrEmpty(bomString) && desc.StartsWith(bomString))
    {
        desc = desc.Remove(0, bomString.Length);
    }
    return desc;
}

另外,附上一些编码的字节顺序标记(BOM)

编码BOM(十六进制)
UTF-8EF BB BF
UTF-16(大端序)FE FF
UTF-16(小端序)FF FE
UTF-32(大端序)00 00 FE FF
UTF-32(小端序)FF FE 00 00
UTF-72B 2F 76和以下的一个字节:38, 39, 2B, 2F
en:UTF-1F7 64 4C
en:UTF-EBCDICDD 73 66 73
en:Standard Compression Scheme for Unicode0E FE FF
en:BOCU-1FB EE 28 及可能跟随着FF
GB-1803084 31 95 33

参考资料:
Strip Byte Order Mark from string in C#
Byte order mark

转载请注明:宇托的狗窝 » C#删除文件中字节顺序标记(BOM)的方法

发表我的评论
取消评论

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址