使用ADO.net(OLEDB)导入UTF-8格式的CSV文件

3

我使用这段代码来导入一个文本文件(.CSV),但是当该文件采用UTF-8编码时,导入不成功。只有把它保存为ANSI编码(使用记事本.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 )

CharacterSet= 的有效值为 CharacterSet=ANSICharacterSet=OEM来源 - Esailija
我已经尝试了这两种编码方式,ANSI在非英语字符时会出现错误。OEM则会出现无字段错误。那么OEM是什么意思呢? - sosoben
你最好使用第三方CSV解析器,它们比OleDB快得多,并且可以给开发人员更多的控制权。 - Victor Zakharov
例如?哪个解析器更好(就像使用SQL查询一样)?而且是免费的。 - sosoben
1个回答

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接