Microsoft.Jet.OLEDB.4.0转换字符

时间:2011-04-26 17:25:17

标签: c# sql oledb collation

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

” and •

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

“ and •

我怀疑连接字符串中可能存在整理设置,但我无法找到任何相关内容。

我可以确认以下内容:

  1. 我打开它时会看到CSV中的原始字符。
  2. 如果我通过OleDb WHERE [field] LIKE'%•%'在文件上运行select我得到0行但是如果SELECT WHERE [field] LIKE'%'%'我得到了返回的行。
  3. 有什么想法吗?

2 个答案:

答案 0 :(得分:10)

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

产生的工作连接字符串:

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

Key是CharacterSet = 65001(Code Page Identifier for UTF-8),这可能对一些整理精明的人来说是显而易见的,但我多年来设法避免了这些问题,并且在这方面从未遇到过这些问题。

在遵循@ http://msdn.microsoft.com/en-us/library/ms709353%28v=vs.85%29.aspx找到的文档并将CharacterSet设置为与上述相同时,我也能够使HABJAN的解决方案正常工作。

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

由于

答案 1 :(得分:4)

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

看看这个示例:How to read data from Unicode formatted text file and import to Data Table using .Net

以下是另一个示例,它将向您展示如何使用schema.ini读取csv文件:Importing CSV file into Database with Schema.ini