我有一个工具可以读取 dBase 文件并将内容上传到 SQL Server,这是导入 shapefile 系统的一部分。它可以工作,但现在我们需要导入包含非英语字符的文件(在这种情况下是挪威语,以后可能是其他语言)并且它们已被损坏。
正在使用 OleDbDataAdapter 读取 dBase 文件。单步执行代码,我可以看到文本在读入时是错误的。我假设它与代码页或 Unicode 有关,但我不知道如何修复它。
一个 dBase Reader 应用程序告诉我 DBF 在代码页 1252 中——我不知道这是否正确。我的上传工具在 Win7 上运行,具有英语(英国)区域设置。
例子:
DBF 中的 ÅSGARD 在 VB.Net 和 SQL Server 中变为 +SGARD。
DBF 中的 RINGHORNE ØST 在 VB.Net 和 SQL Server 中变为 RINGHORNE ÏST。
读取 DBF 的代码:
dbfConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & strPath & ";Extended Properties=dBASE IV"
Cnn.ConnectionString = dbfConnectionString
Cnn.Open()
strSQL = "SELECT * FROM [" & strDBF & "]"
DA = New OleDb.OleDbDataAdapter(strSQL, Cnn)
DS = New DataSet
DA.Fill(DS)
If DS.Tables(0).Rows.Count > 0 Then
dtDBF = DS.Tables(0)
Else
dtDBF = Nothing
End If
数据读取如下: Name = dtDBF.Rows(index)("NAME_1")
有没有办法告诉 OleDbDataAdapter 使用哪个代码页,或者有更好的方法从 VB.Net 读取 dBase 文件?