Microsoft.Jet.OLEDB.4.0转换字符
我正在使用包含以下字符的CSV:
” and •
我正在通过OleDb阅读CSV,提供者是Microsoft.Jet.OLEDB.4.0。 当数据加载到OleDbCommand时,字符分别转换为以下内容:
“ and •
我怀疑连接字符串中可能有一个排序规则设置,但我无法找到任何相关信息。
我可以确认以下内容:
- 我打开它时可以看到CSV中的原始字符。
- 如果我通过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的代码页标识符 ),对于一些整理精明的人来说这可能是显而易见的,但我多年来设法避免了这些问题,并且从未在这方面遇到过这个问题。
对于我的情况,这是一个更好的方法,因为它是一个更简单/更易维护的解决方案,但+1到HABJAN帮助我到达那里!
谢谢
您可以创建schema.ini
文件并使用format和CharacterSet
属性。
看看这个示例: 如何从Unicode格式的文本文件中读取数据并使用.Net导入到数据表
这是另一个示例,它将向您展示如何使用schema.ini读取csv文件: 使用Schema.ini将CSV文件导入数据库