当前位置:  开发笔记 > 编程语言 > 正文

读取Csv文件编码错误

如何解决《读取Csv文件编码错误》经验,为你挑选了1个好方法。

我使用以下方法来读取Csv文件内容:

    /// 
    /// Reads data from a CSV file to a datatable
    /// 
    /// Path to the CSV file
    /// Datatable filled with data read from the CSV file
    public DataTable ReadCsv(string filePath)
    {
        if (string.IsNullOrEmpty(filePath))
        {
            log.Error("Invalid CSV file name.");
            return null;
        }

        try
        {
            DataTable dt = new DataTable();

            string folder = FileMngr.Instance.ExtractFileDir(filePath);
            string fileName = FileMngr.Instance.ExtractFileName(filePath);
            string connectionString = 
            string.Concat(@"Driver={Microsoft Text Driver (*.txt; *.csv)};Dbq=",
            folder, ";");

            using (OdbcConnection conn = 
                   new System.Data.Odbc.OdbcConnection(connectionString))
            {
                string selectCommand = string.Concat("select * from [", fileName, "]");
                using (OdbcDataAdapter da = new OdbcDataAdapter(selectCommand, conn))
                {
                    da.Fill(dt);
                }
            }

            return dt;
        }
        catch (Exception ex)
        {
            log.Error("Error loading CSV content", ex);
            return null;
        }
    }

如果我有一个UTF-8编码的Csv文件,其schema.ini看起来像这样:

[Example.csv]
Format=Delimited(,)
ColNameHeader=True
MaxScanRows=2
CharacterSet=ANSI

如果我在具有Unicode编码的Csv文件中有德语字符,则该方法无法正确读取数据.

我可以对上述读取Unicode Csv文件的方法进行哪些修改?如果没有办法这样做,你能建议哪些Csv阅读代码?



1> csgero..:

尝试CharacterSet=UNICODE在schema.ini文件中使用.虽然这在MSDN上没有记录,但它可以根据Microsoft论坛上的这个主题进行操作.

推荐阅读
coco2冰冰
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有