У меня есть инструмент, который читает файлы dBase и загружает содержимое в SQL Server, часть системы для импорта шейп-файлов.Это работает, но теперь у нас есть требование импортировать файлы, которые содержат неанглийские символы (норвежский в данном случае могут быть другими языками позже), и они повреждены.
Файлы dBase читаются с использованиемOleDbDataAdapter.Пошагово просматривая код, я вижу, что текст неверен при чтении. Я предполагаю, что это как-то связано с кодовыми страницами или Unicode, но я не знаю, как это исправить.
DBase ReaderПриложение говорит мне, что DBF находятся в кодовой странице 1252 - я не знаю, если это правильно.Мой инструмент загрузки работает на Win7 с английскими (Великобритания) региональными настройками.
Примеры:
ÅSGARD в DBF становится + SGARD в VB.Net и SQL Server.
RINGHORNE ØSTв DBF становится RINGHORNE ÏST в VB.Net и SQL Server.
Код, который читает 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, какую кодовую страницу использовать, или лучший способ чтения файлов dBase из VB.Net?