首页 文章

将CSV导入VB.Net时指定UTF8编码

提问于
浏览
1

我正在将数据从csv文件导入到我的vb.net应用程序中 . 以下是我用来实现此目的的当前代码:

Dim myImportConnectionString As String = "provider=Microsoft.Jet.OLEDB.4.0;Data Source='" & txtboxSelectFile.Text & "';Extended Properties=""Excel 8.0;IMEX=1"""
    Dim MyImportConnection As New System.Data.OleDb.OleDbConnection
    MyImportConnection.ConnectionString = myImportConnectionString
    MyImportConnection.Open()
    Dim myImportAdapterString As String = "select * from [" & mySheet & "$]"
    Dim MyImportCommand As New System.Data.OleDb.OleDbCommand(myImportAdapterString, MyImportConnection)
    Dim myImportDataAdapter As New System.Data.OleDb.OleDbDataAdapter(MyImportCommand)
    Dim myImportDataTable As New System.Data.DataTable
    myImportDataAdapter.Fill(myImportDataTable)
    dgvFirst.DataSource = myImportDataTable
    myImportDataAdapter.Dispose()
    MyImportCommand.Dispose()
    MyImportConnection.Close()
    MyImportConnection.Dispose()
    GC.Collect()

我遇到的问题是数据是UTF8编码的 . 导入时,任何特殊字符显示不正确 . 我可以打开csv文件并使用正确编码的唯一方法是手动打开它,使用Excel,并将数据导入新的Excel文件 .

有没有什么办法可以指定在将文件自动导入到vb.net数据表中时使用的编码,以便正确显示外来字符?

非常感谢 :)

1 回答

  • 0

    您可以将 ;CharacterSet=ANSI 作为输入编码添加到 Extended Properties

    更换

    Dim myImportConnectionString As String = "provider=Microsoft.Jet.OLEDB.4.0;Data Source='"_ 
       & txtboxSelectFile.Text & "';Extended Properties=""Excel 8.0;IMEX=1"""
    

    通过

    Dim myImportConnectionString As String = "provider=Microsoft.Jet.OLEDB.4.0;Data Source='"_ 
       & txtboxSelectFile.Text & "';Extended Properties=""Excel 8.0;IMEX=1"";CharacterSet=ANSI"
    

    (想法来自here

相关问题