閱文時長 | | 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