我正在使用OleDbConnection和OleDbDataAdapter将.DBF读取到DataSet中,并且遇到了编码问题。
.DBFfile应该编码为UTF-8。在.DBF中,我们使用特殊字符(?)作为特定字段的分隔符。当我在该字段中读取时,特殊字符显示为另一个字符(1/4)。
我的连接字符串是Provider=Microsoft.Jet.OLEDB.4.0;Data Source=PATH_TO_DIRECTORY;Extended Properties="dBASE IV;charset=65001"。我尝试了一些不同的charset值,比如基于我在MSDN Code Page Identifier页面上找到的值的utf8和20127,以及其他论坛帖子(我在论坛上看到有人用utf8代替数字)。
我还尝试将DataSet的Locale设置为System.Globalization.CultureInfo.GetCultureInfo("en-US")。
我不能将数据转换为另一种格式,因为.DBF是shapefile的一部分,而且我也不希望必须执行查找/替换操作来修复字符串。我不能保持该值不变,因为它会使对同一.DBF的查询变得混乱。
我还没能纠正这个问题,也没能找到关于OleDB编码问题的合适的论坛帖子。这看起来是一个纯粹的OleDB问题,因为其他驱动程序(更多面向地理信息系统)可以很好地阅读这篇文章。我也不喜欢更改驱动程序,因为程序的其余部分都使用OleDB。
发布于 2015-04-06 21:33:45
您不能在连接字符串中使用UTF-8编码-它只是不受支持。为了能够将UTF-8写入DBF,您应该将源ANSI文本转换为UTF-8字符串,然后将其写入。反之亦然。
https://stackoverflow.com/questions/29438283
复制相似问题