如何在txmldocument.xml中获取encoding ="utf-8"?>?

nol*_*ker 2 delphi txmldocument

这在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;
Run Code Online (Sandbox Code Playgroud)

我仍然没有得到encoding="utf-8"?>生成的文档.但如果我说

  XMLDoc.Encoding := 'utf-16';
Run Code Online (Sandbox Code Playgroud)

那么我确实得到encoding="utf-16"?>了最终的文档.

有任何想法吗?任何人?

Rem*_*eau 6

当没有encoding属性或BOM表示正在使用不同的编码时,UTF-8是XML的默认编码.底层XML引擎知道这一点,因此encoding当它知道UTF-8安全时,它将省略为UTF-8 生成属性.

AFAIK,没有办法迫使IXMLDocument.XML.TextIXMLDocument.SaveToXML(var XML: DOMString)IXMLDocument.SaveToXML(var XML: WideString)以产生encoding对于UTF-8属性.然而,IXMLDocument.SaveToXML(var XML: UTF8String)IXMLDocument.SaveToStream()不产生encodingUTF-8的属性.