2010-11-13 78 views
2

以下是我設置我的XmlWriter和xmlWriterSettings:爲什麼xmlWriter在輸出xml文件中寫入ASCII字符?

 XmlWriterSettings settings = new XmlWriterSettings(); 
     settings.Encoding.Equals("UTF-8"); 
     settings.Indent = true; 
     settings.OmitXmlDeclaration = true; 
     settings.NewLineOnAttributes = true;   
     settings.CheckCharacters = true; 
     settings.OmitXmlDeclaration = false; 

     XmlWriter xmlWriter = XmlWriter.Create(otptFile,settings); 

我產生,看起來像一個有效的XML文件的文件,但是當我通過一個驗證運行它,我得到一個錯誤:ASCII「\ EF」不不映射到unicode。

如果我在文本板中打開此文件並保存它,則此錯誤消失且文件有效。

我正在使用streamReader讀取ascii文件。我檢查了是否需要在streamreader聲明中設置某些內容,但是從我所瞭解的UTF-8是默認設置。

我想知道爲什麼我的程序具有ascii值,如果我已將編碼設置爲UTF-8,以及如何在代碼中輕鬆刪除。謝謝你的幫助!

回答

3

字節序列0xEF,0xBB,0xBF是UTF-8 byte order mark(BOM)。

如果你不想輸出BOM,設置Encoding propertyUTF8Encoding實例與encoderShouldEmitUTF8Identifierconstructor參數設置爲false

settings.Encoding = new UTF8Encoding(false); 
+0

謝謝大家,現在驗證! – zz1 2010-11-13 00:54:57

相關問題