C# Winform 文件編碼批量轉換工具
在發布產品程序包時,往往需要對程序文件進行編碼檢查,寫了一個可以批量修改文件編碼格式的輔助工具,希望對有同樣需求的童鞋有幫助。
1.程序界麵:

2.核心代碼:
/// <summary> /// 取得文件編碼方式 /// </summary> /// <param name="path"></param> /// <returns></returns> public Encoding GetFileEncode(string path) { FileStream fileStream = File.Open(path, FileMode.Open, FileAccess.ReadWrite); var buffer = new byte[fileStream.Length]; if (buffer.Length <= 0 || buffer[0] < 239) return Encoding.Default; if (buffer[0] == 239 && buffer[1] == 187 && buffer[2] == 191) return Encoding.UTF8; if (buffer[0] == 254 && buffer[1] == byte.MaxValue) return Encoding.BigEndianUnicode; if (buffer[0] == byte.MaxValue && buffer[1] == 254) return Encoding.Unicode; return Encoding.Default; } /// <summary> /// 取得文件編碼方式 /// </summary> /// <param name="buffer"></param> /// <returns></returns> private Encoding GetEncode(byte[] buffer) { if (buffer.Length <= 0 || buffer[0] < 239) return Encoding.Default; if (buffer[0] == 239 && buffer[1] == 187 && buffer[2] == 191) return Encoding.UTF8; if (buffer[0] == 254 && buffer[1] == byte.MaxValue) return Encoding.BigEndianUnicode; if (buffer[0] == byte.MaxValue && buffer[1] == 254) return Encoding.Unicode; return Encoding.Default; } /// <summary> /// 按指定編碼方式讀取文本 /// </summary> /// <param name="buffer"></param> /// <param name="encoding"></param> /// <returns></returns> private string GetTxt(byte[] buffer, Encoding encoding) { if (Equals(encoding, Encoding.UTF8)) return encoding.GetString(buffer, 3, buffer.Length - 3); if (Equals(encoding, Encoding.BigEndianUnicode) || Equals(encoding, Encoding.Unicode)) return encoding.GetString(buffer, 2, buffer.Length - 2); return encoding.GetString(buffer); } /// <summary> /// 讀取文本(自適應編碼方式) /// </summary> /// <param name="buffer"></param> /// <returns></returns> private string GetTxt(byte[] buffer) { return GetTxt(buffer, GetEncode(buffer)); } /// <summary> /// 寫入文本 /// </summary> /// <param name="filepath">寫入文件</param> /// <param name="body">寫入內容</param> /// <param name="encoding">編碼方式</param> private void WriteTxt(string filepath, string body, Encoding encoding) { if (File.Exists(filepath)) File.Delete(filepath); byte[] bytes = encoding.GetBytes(body); FileStream fileStream = File.Open(filepath, FileMode.CreateNew, FileAccess.Write); if (Equals(encoding, Encoding.UTF8)) { fileStream.WriteByte(239); fileStream.WriteByte(187); fileStream.WriteByte(191); } else if (Equals(encoding, Encoding.BigEndianUnicode)) { fileStream.WriteByte(254); fileStream.WriteByte(byte.MaxValue); } else if (Equals(encoding, Encoding.Unicode)) { fileStream.WriteByte(byte.MaxValue); fileStream.WriteByte(254); } fileStream.Write(bytes, 0, bytes.Length); fileStream.Flush(); fileStream.Close(); fileStream.Dispose(); }
3.程序源碼下載
最後更新:2017-04-03 08:26:24