OleDbConnection字符串和unicode

时间:2012-03-19 16:00:24

标签: c# unicode oledb

在我的程序中,我正在读取HTML文件中的数据,但在这个文件中,有时会有一些包含unicode字符的文本数据被转换回UTF-8:

Michèle - > Michèle

我正在使用以下代码从文件中检索数据:

        string ConnectionString = string.Format("Provider=Microsoft.ACE.OLEDB.12.0;Data Source={0};Extended Properties=\"HTML import;CharacterSet=UNICODE;HDR=NO;IMEX=1;MaxScanRows=0;TypeGuessRows=0\";", fileName);

        using (OleDbConnection cn = new OleDbConnection(ConnectionString))
        {
            cn.Open();

            using (OleDbCommand cm = cn.CreateCommand())
            {
                string pageName = "bestelformulier";
                cm.CommandText = string.Format("Select * from [{0}]", pageName);
                cm.CommandType = CommandType.Text;

                var da = new OleDbDataAdapter(cm);
                var ds = new DataSet();
                da.Fill(ds);

                var dt = ds.Tables[0];

                ProcessRows(dt);
            }
        }

我搜索谷歌试图找出如何'告诉'OleDb在阅读文件时使用Unicode但我还没有找到解决方案(使用扩展属性CharacterSet = UNICODE似乎不起作用)。这里的任何人都可以帮助我吗?

感谢, Jurjen。

20-mrt-2012,15.41

我还没有找到解决方案,但我创建了一个小函数te将字符串恢复到原始状态,这就是我在读取数据后现在对所有字符串字段使用的内容。

    private static Encoding iso = Encoding.GetEncoding("ISO-8859-1");
    public static string RepairUTF8(this string value)
    {
        byte[] bytes = iso.GetBytes(value);

        if (bytes.Any(o => o.Equals(195)))
        {
            return Encoding.UTF8.GetString(bytes);
        }

        return value;
    }

0 个答案:

没有答案