当我的代码出现问题时,我将数组的内容写入文件,如下所示:-
Private Sub DumpArray (ByRef array_to_dump(,) As MyEnum, ByVal file_name As String)
Dim sw As StreamWriter = New StreamWriter(file_name)
For i As Integer = array_to_dump.GetLowerBound(0) To array_to_dump.GetUpperBound(0)
For j As Integer = array_to_dump.GetLowerBound(1) To array_to_dump.GetUpperBound(1)
If array_to_dump(i, j) = MyEnum.This Then
sw.Write("Fred")
Else
sw.Write("Bert")
End If
sw.Write(vbTab)
Next j
sw.WriteLine
Next i
sw.Flush
sw.Close
End Sub
这会产生我期望的输出;在当前情况下,文件填充为“Fred”,并用制表符分隔。但是,如果我将代码的业务端更改为:-
If array_to_dump(i, j) = MyEnum.This Then
sw.Write("1")
Else
sw.Write("0")
End If
该文件充满了非打印字符,这些字符在记事本中显示为小框,而不是我期望的由制表符分隔的“0”行。任何其他单字符字符串对都会执行相同的操作。
虽然这不是一个紧迫的重要问题,但我很好奇为什么会这样。有谁知道吗?
最佳答案
您必须设置 encoding当你像 @DavidSdot 所说的那样声明你的 SteamWriter
时,会变成其他东西。就像这样:
Dim writer As StreamWriter = New StreamWriter(file_name, Encoding.Default)
摆弄一下该特性,您可能会发现一个很好的值(value)。我不是编码专家,但这应该是您问题的罪魁祸首。
关于vb.net - 单字符字符串未正确写入文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29768536/