【发布时间】: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