【问题标题】:Specifying UTF8 Encoding When Importing a CSV to VB.Net将 CSV 导入 VB.Net 时指定 UTF8 编码
【发布时间】:2016-12-08 20:37:48
【问题描述】:

我正在将 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 数据表时,我有什么方法可以指定要使用的编码,以便正确显示外来字符?

非常感谢:)

【问题讨论】:

  • 如果您正在尝试读取 CSV 文件,您正在做的事情是不是有点矫枉过正?
  • 看看this
  • 你为什么用OLEDB查询csv文件!??

标签: vb.net excel utf-8


【解决方案1】:

您可以将;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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-08-18
    • 1970-01-01
    • 1970-01-01
    • 2011-05-31
    • 1970-01-01
    • 2015-08-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多