阅文时长 | | 0.46分钟 | 字数统计 | | 798.4字符 |
主要内容 | | 一、引言&背景 二、使用C#写入带有/不带有BOM头的文件? 三、对于读取文件时,避免BOM头形成的异常。 四、声明与参考资料 | ||
『C#·对于BOM头之彻底解决方案』 | |||
编写人 | | SCscHero | 编写时间 | | 2021/3/13 PM10:38 |
文章类型 | | 系列 | 完成度 | | 待完善 |
座右铭 | 每个伟大的事业,都有一个微不足道的开始。 |
使用有参构造函数,来肯定是否使用BOM头。以下代码:函数
var utf8WithoutBom = new System.Text.UTF8Encoding(false);//使用构造函数布尔参数指定是否含BOM头,示例false为不含。 var utf8WithBom = new System.Text.UTF8Encoding(false);//使用构造函数布尔参数指定是否含BOM头,示例true为含。 using (var sink = new StreamWriter("WithoutBom.txt", false, utf8WithoutBom)) { sink.WriteLine("Hello,SCscHero"); } using (var sink = new StreamWriter("WithBom.txt", false, utf8WithBom)) { sink.WriteLine("Hello,SCscHero"); }
根据BOM头的特性,咱们可使用判断字节流的方式。以下代码:spa
var fileByte = System.IO.File.ReadAllBytes(@"TestBom.txt"); var isBom = isBomHeader(fileByte); Console.WriteLine("是否含有Bom头:{0}",isBom);
能够将判断是不是BOM头的代码封装成一个公用方法,以下代码:rest
public static bool isBomHeader(byte[] bs) { int len = bs.Length; if (len >= 3 && bs[0] == 0xEF && bs[1] == 0xBB && bs[2] == 0xBF) { return true; } return false; }
原创博文,未经许可请勿转载。
若有帮助,欢迎点赞、收藏、关注。若有问题,请评论留言!如需与博主联系的,直接博客私信SCscHero便可。code