【问题标题】:Stream Reader not Reading SuperScript characters流阅读器不读取上标字符
【发布时间】:2018-10-16 02:39:39
【问题描述】:

我正在使用 StreamReader 将数据从 Tab Delim 文本文件导入到名为 Import Data 的数据表中。由于某些原因,上标字符一旦导入表中就无法读取。

例如,如果我在文本文件中有一个 ProductName 值“Universal 360° Rotating Finger Ring Holder”,导入后该值变成“Universal 360� Rotating Finger Ring Holder” 与“® , ™”等其他字符相同”。

我的代码有什么关系吗?

Public Function FillData(ByVal Fpath As String) As Boolean
        Dim XRead As System.IO.StreamReader = New IO.StreamReader(FilePath)
        Dim XLine As String = Nothing
        Dim XSplitLine() As String
        Dim i As Integer = ImportedData.Rows.Count + 1
        Try
            XRead.ReadLine()
            XLine = XRead.ReadLine()
            Do Until XLine Is Nothing

                XLine = i & vbTab & XLine & vbTab & FilePath
                XSplitLine = XLine.Split(CType(vbTab, Char()))

                ImportedData.Rows.Add(XSplitLine)
                XLine = XRead.ReadLine
                i += 1
            Loop
            XRead.Close()

        Catch ex As Exception
            MessageBox.Show("Error")
            Return False
            Exit Function
        End Try

        Return True
    End Function

【问题讨论】:

  • 输入文件存储在什么编码中?它是某种形式的 ASCII 还是 UTF?文件开头是否包含 BOM?
  • 看到回来告诉你你正在使用wrong Encoding。如果文件在传输到您的计算机时没有跨越太多边界,则 Encoding.Default 往往是下一个正确的猜测。强烈建议鼓励编写创建此文件的程序的程序员使用 utf8。
  • @Steven Doggart,测试文件以 ANSI 编码。
  • ANSI 并不是一个足够具体的术语。人们将许多编码称为 ANSI。你知道具体是哪一种吗?
  • @J.Doe 它是否适用于Dim XRead As System.IO.StreamReader = New IO.StreamReader(filepath, Text.Encoding.GetEncoding(1252))

标签: vb.net streamreader


【解决方案1】:
Dim XRead As System.IO.StreamReader = New IO.StreamReader(FilePath,Text.encoding.DefaultEncoding)

应该能够正确阅读。

【讨论】:

    猜你喜欢
    • 2015-09-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-24
    • 2015-08-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多