2014-02-24 142 views
1

以下是在VB.Net 2012中向文件写入文本的两种方法。第一种方法将每个文件的前三个不可打印字符前置:第二个按预期工作,不添加三个字符。 objDataReader是一个OleDB数据记录器。FileSystem.WriteAllText添加不可打印的字符

任何想法为什么?

格雷格

My.Computer.FileSystem.WriteAllText(lblLocation.Text & "\" & 
objDataReader("MessageControlId").ToString & ".txt", objDataReader("MsgContents").ToString, False) 

Using outfile As New StreamWriter(lblLocation.Text & "\" & objDataReader("MessageControlId").ToString & ".txt") 
    outfile.Write(objDataReader("MsgContents").ToString) 
End Using 
+2

它是BOM,它说,该文件的其余部分包含UTF-8编码的文本。 BOM是一件好事,这是完全正常的,任何现代文本编辑器都知道如何处理它。 VS肯定会。不幸的是,StreamWriter使用utf-8,但默认情况下不写BOM。你必须添加UTF8Encoding作为构造函数的第二个参数才能使它做正确的事情。 –

回答

1

感谢。我在Google搜索结果BOM后发现了下面的条目,以防有人想要更详细的解释。虽然BOM在文本编辑器中不可见,但当我将文件传递给我们的HL7接口引擎时,确实会造成问题。

格雷格

Write text files without Byte Order Mark (BOM)?