Microsoft.Jet.OLEDB.4.0 转换字符
Posted
技术标签:
【中文标题】Microsoft.Jet.OLEDB.4.0 转换字符【英文标题】:Microsoft.Jet.OLEDB.4.0 Converting Characters 【发布时间】:2011-08-13 05:42:55 【问题描述】:我正在使用包含以下字符的 CSV:
” and •
我正在通过 OleDb 读取 CSV,提供程序是 Microsoft.Jet.OLEDB.4.0。当数据加载到 OleDbCommand 中时,字符分别转换为:
“ and •
我怀疑连接字符串中可能存在排序规则设置,但我找不到任何相关信息。
我可以确认以下几点:
-
当我打开 CSV 时,我可以看到原始字符。
如果我通过 OleDb WHERE [field] LIKE '%•%' 对文件运行选择,我会得到 0 行,但如果 SELECT WHERE [field] LIKE '%-%' 我会返回行。
有什么想法吗?
【问题讨论】:
你的问题到底是什么? 如何使用 OleDbConnection 加载数据并在运行选择时阻止它转换字符? 【参考方案1】:您可以创建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
【讨论】:
【参考方案2】:终于!感谢@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 (Code Page Identifier for UTF-8),这对于一些精通整理的人来说可能很明显,但多年来我设法避免了这些问题,并且在这方面从未遇到过。
当我还遵循 @http://msdn.microsoft.com/en-us/library/ms709353%28v=vs.85%29.aspx 找到的文档并将 CharacterSet 设置为与上述相同时,我也能够让 HABJAN 的解决方案发挥作用。
对于我的情况,这是更好的方法,因为它是一个更简单/更易于维护的解决方案,但是 +1 对 HABJAN 帮助我到达那里!
谢谢
【讨论】:
根据 MSDN,我看到只有 2 个选项可以将 CharacterSet 设置为 ANSII 或 OEM。但是,我看到您明确提到了 UTF8 的代码。这是否有效,并且任何其他代码(如 1252)也有效? docs.microsoft.com/en-us/sql/odbc/microsoft/…以上是关于Microsoft.Jet.OLEDB.4.0 转换字符的主要内容,如果未能解决你的问题,请参考以下文章
Microsoft.Jet.OLEDB.4.0 与 Microsoft.ACE.OLEDB.12.0,我应该使用哪个?
将连接字符串从 Microsoft.Jet.OLEDB.4.0 转换为 Microsoft.ACE.OLEDB.12.0 提供程序
使用 microsoft.jet.oledb.4.0 从 paradox db 过滤日期字段
Microsoft.Jet.OLEDB.4.0' 提供程序未在本地计算机上注册