我正在使用Microsoft.VisualBasic.Fileio.TextFieldParser来解析使用Excel 2003创建的CSV文件。解析器工作得很好,除了它将扩展的ascii值转换为问号!因此,如果文件内容是:
±3
TextFieldParser正在返回
? 3
我已经尝试过System.Text.Encoding包中的所有编码而没有运气。我以为我使用了UTF7,但它正在删除其他字符,例如用空格替换+符号。
非常感谢任何帮助。
答案 0 :(得分:17)
Microsoft.VisualBasic.Fileio.TextFieldParser默认为UTF8编码,但文本文件采用系统当前的ANSI编码。使用其中一个采用编码的构造函数:TextFieldParser(string path, Encoding defaultEncoding)。
您可以传入System.Text.Encoding.Default进行编码,或者在代码页中构建新的编码对象。英语Windows上的默认值为1252。
答案 1 :(得分:0)
Dim s As String = "± 3"
'this produces the ?
Dim b() As Byte = System.Text.ASCIIEncoding.ASCII.GetBytes(s)
'try this
Dim anEncoding As System.Text.Encoding = System.Text.Encoding.GetEncoding(28591)
b = anEncoding.GetBytes(s)
s = anEncoding.GetChars(b) 'check to see if it round-trips