使用ADO.net和xFF08导入UTF-8 CSV文件;OLEDB和xFF09;

使用ADO.net和xFF08导入UTF-8 CSV文件;OLEDB和xFF09;,.net,vb.net,csv,utf-8,.net,Vb.net,Csv,Utf 8,我使用此代码导入文本文件(.CSV),但如果此文件是由UTF-8代码创建的,则无法成功。只有我保存为ANSI代码(使用Note.exe),才可以 Function getDataset(ByVal sql As String, ByVal path As String) As DataSet 'Try 'Dim connstr As String = GetINI("Setting", "cString", "Provider=Microsoft.Jet.OLEDB.4.

我使用此代码导入文本文件(.CSV),但如果此文件是由UTF-8代码创建的,则无法成功。只有我保存为ANSI代码(使用Note.exe),才可以

Function getDataset(ByVal sql As String, ByVal path As String) As DataSet
    'Try
    'Dim connstr As String = GetINI("Setting", "cString",     "Provider=Microsoft.Jet.OLEDB.4.0;Data Source= C:\DataSouce\DataBase.mdb", Application.StartupPath & "\setting.ini")
    Dim connstr As String = "Provider=Microsoft.jet.OLEDB.4.0;Data Source= " & path & "\;Extended Properties=""text;HDR=YES;FMT=Delimited"""
    Dim conn As OleDbConnection = New OleDbConnection(connstr)                   '("provider=microsoft.Jet.OLEDB.4.0;data source=" & CurDir() & "\data.mdb")
    Dim adapter1 As OleDb.OleDbDataAdapter = New OleDbDataAdapter(sql, conn)
    Dim cmd As OleDbCommand = New OleDbCommand
    Dim commandBuilder As OleDbCommandBuilder = New OleDbCommandBuilder(adapter1)
    getDataset = New DataSet
    adapter1.Fill(getDataset, "temp")
    'Catch ex As Exception
    '    MsgBox(ex.Message)
    'End Try

 End Function
我甚至尝试构建一个schema.ini,像这样,也不行

[temp.CSV]
Format=Delimited(,)
ColNameHeader=false
MaxScanRows=0
CharacterSet= ANSI  
 (or  UTF-8 )

VB有一个内置的csv解析器。请查看本文:


TextFieldParser位于Microsoft.VisualBasic.FileIO命名空间中。如果要用C语言构建模块,则必须导入它。

字符集=的有效值为
CharacterSet=ANSI
CharacterSet=OEM
。我已经尝试了这两种方法,当ANSI不是英语时,它会得到错误的字符。oem将不会得到任何字段错误。OEM意味着什么?你应该更好地使用第三方CSV解析器,它们比OleDB快得多,并且给你作为开发人员更多的控制权。例如?什么解析器更好(就像使用sql查询)?而且是免费的