如何从UTF 8编码的csv中删除BOM()字符?

Har*_*run 5 c# csv parsing utf-8

我需要解析一个utf8编码的csv.在转换之后,我刚刚看到问题在于beging的BOM()字符.我无法使用utf8编码创建一个避免BOM的csv,因为我需要解析它,即使它是utf8编码的.

任何人请告诉我如何使用c#.net从csv中删除BOM()字符.

更新:我已经添加了我的代码来读取csv头文件,因为我在文件的开头获取了BOM.

 string CSVConnectionString = "Driver={Microsoft Text Driver (*.txt; *.csv)};Dbq=" + ConfigurationSettings.AppSettings["CSVFolder"].ToString() + ";Extensions=asc,csv,tab,txt;Persist Security Info=False;";

        using (OdbcConnection Connection = new OdbcConnection(CSVConnectionString))
        {
            List<string> CSVHeaders = new List<string>();

            string SelectQuery = string.Format(@"SELECT TOP 1 * FROM [{0}]", CSVFileName);

            OdbcCommand Command = new OdbcCommand(SelectQuery, Connection);

            Connection.Open();

            OdbcDataReader Reader = Command.ExecuteReader(System.Data.CommandBehavior.CloseConnection);

            int ColumnCount = Reader.FieldCount;

            for (int column = 0; column < ColumnCount; column++)
            {
                CSVHeaders.Add(Reader.GetName(column));
            }

            return CSVHeaders;
        }
Run Code Online (Sandbox Code Playgroud)

Sim*_*ier 4

这是执行此操作的函数:

    public static void SaveAsUTF8WithoutByteOrderMark(string fileName)
    {
        SaveAsUTF8WithoutByteOrderMark(fileName, null);
    }

    public static void SaveAsUTF8WithoutByteOrderMark(string fileName, Encoding encoding)
    {
        if (fileName == null)
            throw new ArgumentNullException("fileName");

        if (encoding == null)
        {
            encoding = Encoding.Default;
        }

        File.WriteAllText(fileName, File.ReadAllText(fileName, encoding), new UTF8Encoding(false));
    }
Run Code Online (Sandbox Code Playgroud)