2014-02-24 53 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)?