Microsoft.Jet.OLEDB.4.0转换字符

我正在使用包含以下字符的CSV:

” and • 

我正在通过OleDb阅读CSV,提供者是Microsoft.Jet.OLEDB.4.0。 当数据加载到OleDbCommand时,字符分别转换为以下内容:

 “ and • 

我怀疑连接字符串中可能有一个排序规则设置,但我无法找到任何相关信息。

我可以确认以下内容:

  1. 我打开它时可以看到CSV中的原始字符。
  2. 如果我通过OleDb WHERE [field] LIKE’%•%’在文件上运行select我得到0行但是如果SELECT WHERE [field] LIKE’%’%’我得到返回的行。

有什么想法吗?

最后! 感谢@HABJAN我能够达到分辨率,就像在连接字符串的扩展属性中设置CharaterSet一样简单。 对于我的情况,它是UTF-8 …默认情况下常用于PHPMyAdmin,这是我从中检索数据的地方。

产生的工作连接字符串:

 "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=\"{0}\";Extended Properties=\"text;HDR=Yes;FMT=Delimited;CharacterSet=65001;\"" 

关键是CharacterSet = 65001( UTF-8的代码页标识符 ),对于一些整理精明的人来说这可能是显而易见的,但我多年来设法避免了这些问题,并且从未在这方面遇到过这个问题。

我还能够按照@ http://msdn.microsoft.com/en-us/library/ms709353%28v=vs.85%29.aspx上找到的文档并将CharacterSet设置为以下内容来获得HABJAN的解决方案。与上述相同。

对于我的情况,这是一个更好的方法,因为它是一个更简单/更易维护的解决方案,但+1到HABJAN帮助我到达那里!

谢谢

您可以创建schema.ini文件并使用format和CharacterSet属性。

看看这个示例: 如何从Unicode格式的文本文件中读取数据并使用.Net导入到数据表

这是另一个示例,它将向您展示如何使用schema.ini读取csv文件: 使用Schema.ini将CSV文件导入数据库