閱文時長 | | 0.46分鍾 | 字數統計 | | 798.4字符 |
主要內容 | | 1、引言&背景 2、使用C#寫入帶有/不帶有BOM頭的文件? 3、對於讀取文件時,避免BOM頭造成的異常。 4、聲明與參考資料 | ||
『C#·對於BOM頭之完全解決方案』 | |||
編寫人 | | SCscHero | 編寫時間 | | 2021/3/13 PM10:38 |
文章類型 | | 系列 | 完成度 | | 待完善 |
座右銘 | 每一個偉大的事業,都有一個微不足道的開始。 |
一、引言&背景 完成度:100%
a) 應對問題
- 如何使用C#寫入帶有/不帶有BOM頭的文件?
- 如何使用C#判斷文件是否有BOM頭?
b) 應用場景
- 處理BOM頭的文件。
- 對於讀取文件時,避免BOM頭造成的異常。
c) 預備知識
- 需要了解 BOM頭是什么?。
二、使用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");
}
三、對於讀取文件時,避免BOM頭造成的異常。 完成度:100%
根據BOM頭的特性,我們可以使用判斷字節流的方式。如下代碼:
var fileByte = System.IO.File.ReadAllBytes(@"TestBom.txt");
var isBom = isBomHeader(fileByte);
Console.WriteLine("是否含有Bom頭:{0}",isBom);
可以將判斷是否是BOM頭的代碼封裝成一個公用方法,如下代碼:
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;
}
四、聲明與參考資料 完成度:100%
原創博文,未經許可請勿轉載。
如有幫助,歡迎點贊、收藏、關注。如有問題,請評論留言!如需與博主聯系的,直接博客私信SCscHero即可。