C#自動檢測檔案的編碼

多见多闻發表於2024-11-14
  1. StreamReader 自動編碼檢測

    • 使用 StreamReader 可以自動檢測檔案的編碼(包括 UTF-8 BOM、UTF-16、等),並選擇合適的編碼來讀取檔案。它透過 detectEncodingFromByteOrderMarks: true 來啟用 BOM 檢測功能。
  2. 字元處理

    • StreamReader 讀取的是字元流,而不是位元組流,因此不需要手動處理編碼轉換問題,可以直接處理檔案中的字元。
static bool IsmFile(string filePath)
    {
        try
        {
            using (var reader = new StreamReader(filePath, detectEncodingFromByteOrderMarks: true))
            {
                // 讀取檔案的前3個字元
                char[] buffer = new char[3];
                int charsRead = reader.Read(buffer, 0, buffer.Length);

                // 如果檔案不足3個字元,返回 false
                if (charsRead < 3)
                {
                    return false;
                }

                // 轉換為字串,並進行不區分大小寫的比較
                string header = new string(buffer);
                return header.Equals("ABC", StringComparison.OrdinalIgnoreCase);
            }
        }
        catch (IOException)
        {
            Console.WriteLine("Error reading the file.");
            return false;
        }
    }
}

相關文章