C#·對於BOM頭之徹底解決方案

閱文時長 | 0.46分鐘 字數統計 | 798.4字符
主要內容 | 一、引言&背景 二、使用C#寫入帶有/不帶有BOM頭的文件? 三、對於讀取文件時,避免BOM頭形成的異常。 四、聲明與參考資料
『C#·對於BOM頭之徹底解決方案』
編寫人 | SCscHero 編寫時間 | 2021/3/13 PM10:38
文章類型 | 系列 完成度 | 待完善
座右銘 每個偉大的事業,都有一個微不足道的開始。

1、引言&背景   完成度:100%

a) 應對問題

  1. 如何使用C#寫入帶有/不帶有BOM頭的文件?
  2. 如何使用C#判斷文件是否有BOM頭?

b) 應用場景

  1. 處理BOM頭的文件。
  2. 對於讀取文件時,避免BOM頭形成的異常。

c) 預備知識

  1. 須要瞭解 BOM頭是什麼?

2、使用C#寫入帶有/不帶有BOM頭的文件?   完成度:100%

使用有參構造函數,來肯定是否使用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");
            }

3、對於讀取文件時,避免BOM頭形成的異常。   完成度:100%

根據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;
        }

4、聲明與參考資料   完成度:100%

原創博文,未經許可請勿轉載。

若有幫助,歡迎點贊、收藏、關注。若有問題,請評論留言!如需與博主聯繫的,直接博客私信SCscHero便可。code

相關文章
相關標籤/搜索