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

我从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数据表,以便外来字符显示正确?

非常感谢 :)

您可以添加;CharacterSet=ANSI作为Extended Propertiesinput编码:

更换

 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" 

(想法来自这里 )