这在Delphi XE2中对我不起作用。
Var
XMLDoc : IXMLDOCUMENT;
begin
XMLDoc := NewXMLDocument;
XMLDoc.Active := True;
XMLDoc.Version := '1.0';
XMLDoc.Encoding := 'utf-8';
XMLDoc.Options := [doNodeAutoIndent];
Memo1.Text := XMLDoc.XML.Text;
我仍然没有在生成的文档中获得encoding="utf-8"?>
。但如果我说
XMLDoc.Encoding := 'utf-16';
然后我在生成的文档中得到encoding="utf-16"?>
。
有什么想法吗?任何人吗?
答案 0 :(得分:6)
当没有encoding
属性或BOM表示正在使用不同的编码时,UTF-8是XML的默认编码。底层XML引擎知道这一点,因此当它知道可以安全地为UTF-8生成时,它将省略为encoding
属性生成。
AFAIK,无法强制IXMLDocument.XML.Text
或IXMLDocument.SaveToXML(var XML: DOMString)
或IXMLDocument.SaveToXML(var XML: WideString)
为UTF-8生成encoding
属性。但是,IXMLDocument.SaveToXML(var XML: UTF8String)
和IXMLDocument.SaveToStream()
会为UTF-8生成encoding
属性。