2010-12-11 84 views
5

我正在使用Microsoft.VisualBasic.Fileio.TextFieldParser来解析使用Excel 2003创建的CSV文件。该解析器非常适用于将扩展ascii值转换为问号的异常情况!因此,如果文件内容是:Microsoft.VisualBasic.FileIO.TextFieldParser将±Ascii 241更改为? Ascii 63

±3
使用TextFieldParser将返回
? 3

我已经尝试了所有System.Text.Encoding包中的所有编码,但没有运气。我以为我用UTF7做了它,但它放弃了其他字符,例如用空格替换+号。

任何帮助将不胜感激。

+1

没有'ASCII 241'这样的东西。字节128-255的含义由**扩展名定义为** ASCII,并且其中有很多这样的字符。 – 2010-12-11 00:57:25

+2

您是否检查过该文件保存为?在记事本中打开并选择另存为,应该有一个下拉列表,您可以从中选择编码。检查它在那里,我怀疑ANSI。您可能想尝试将其另存为UTF-8,然后再次通过您的应用运行它。 – Pieter 2010-12-11 01:10:59

回答

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