我需要解析一个utf8编码的csv。转换后,我刚开始发现问题出在BOM表()字符上。我无法创建避免使用utf8编码的BOM的csv,因为我需要解析它,即使它是utf8编码的。

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

更新:自从在文件开头获取BOM以来,我已经添加了代码以读取csv header 。

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

最佳答案

这是执行此操作的函数:

    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));
    }

关于c# - 如何从UTF 8编码的csv中删除BOM(ï?¿)字符?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6260911/

10-11 06:26
查看更多