验证UTF32-> ASCII

时间:2013-12-15 16:56:10

标签: vb.net text ascii

我正在创建一个程序,从电子表格中提取文本,然后将其粘贴到.txt文件中。我发现的问题是,如果字符不是有效的ASCII字符,它将被替换为字符范围从?到^或上标数字。

我知道这是因为这些字符不支持ASCII,但是如何检查并交换它们呢?是否有我可以使用的非ascii支持的字符列表,或者检查有效性的函数?

由于

2 个答案:

答案 0 :(得分:4)

ASCII字符的值介于0到127之间,因此您可以使用AscW function

If AscW(inputChar) > 127 then
    outputChar = "*"c
Else
    outputChar = inputChar
End If
' now write outputChar

答案 1 :(得分:3)

它的另一种方式。没有ASCII支持这样的东西。你可以做的是先给你的文本文件一个UTF32-BOM,然后你的短信服务员可以解释它读取的数字,并有可能显示正确的字符。 请参阅维基百科“Byte Order Mark”。

讨论后编辑: 如果您只需要7位ASCII而不需要其他内容,请使用Encoding.ASCII或Andrews方法 否则你可以使用ASCIIEncoding.GetEncoding(yourcodepage)

Dim thisText As String = "ÄÖÜäöü" & " Pi: " & ChrW(&H3A0) & " Sigma: " & ChrW(&H3A3) 
Dim fileOut As String = Environment.GetFolderPath(Environment.SpecialFolder.Desktop)
Dim enc_ascii As System.Text.Encoding
enc_ascii = System.Text.Encoding.ASCII '7-bit
Using output As New StreamWriter(New FileStream(fileOut & "\test1.txt", FileMode.Create), enc_ascii)
    output.Write(thisText)
End Using
enc_ascii = System.Text.ASCIIEncoding.GetEncoding(1250) 'central europe
Using output As New StreamWriter(New FileStream(fileOut & "\test2.txt", FileMode.Create), enc_ascii)
    output.Write(thisText)
End Using
enc_ascii = System.Text.ASCIIEncoding.GetEncoding(1253) 'greek
Using output As New StreamWriter(New FileStream(fileOut & "\test3.txt", FileMode.Create), enc_ascii)
    output.Write(thisText)
End Using