我有以下代碼:當保存一個XmlDocument,它忽略了編碼的XmlDeclaration(UTF8),並使用UTF16
var doc = new XmlDocument();
XmlDeclaration xmlDeclaration = doc.CreateXmlDeclaration("1.0", "UTF-8", null);
doc.AppendChild(xmlDeclaration);
XmlElement root = doc.CreateElement("myRoot");
doc.AppendChild(root);
root.InnerText = "myInnerText";
StringWriter sw = new StringWriter();
doc.Save(sw);
Console.WriteLine(sw.ToString());
Console.WriteLine();
MemoryStream ms = new MemoryStream();
doc.Save(ms);
Console.WriteLine(Encoding.ASCII.GetString(ms.ToArray()));
這裏是輸出:
<?xml version="1.0" encoding="utf-16"?>
<myRoot>myInnerText</myRoot>
???<?xml version="1.0" encoding="UTF-8"?>
<myRoot>myInnerText</myRoot>
基本上它確實是製作一個xml文件,並將編碼設置爲utf8,但是當它將其保存到字符串編寫器時,它會忽略我的編碼並使用utf16。但是,當使用內存流時,它使用utf8(帶有額外的BOM字符)
這是爲什麼?爲什麼它不遵守我的顯式編碼設置utf-8?
非常感謝
只是好奇,你有沒有試着給空/串。在編碼中清空並看到? – user281693 2010-11-02 03:11:02
如果我這樣做,那麼stringwriter仍然是utf16,並且內存流在其聲明中沒有編碼。 – Chris 2010-11-02 03:20:29
例如。它看起來像這樣:<?xml version =「1.0」?> – Chris 2010-11-02 03:20:48