Delphi 我如何获得编码=“;utf-8“&燃气轮机;在txmldocument.xml中?

Delphi 我如何获得编码=“;utf-8“&燃气轮机;在txmldocument.xml中?,delphi,txmldocument,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; 我仍然没有在生成的文档

这在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”>


有什么想法吗?有人吗?

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


总之,没有办法强制
IXMLDocument.XML.Text
IXMLDocument.SaveToXML(var-XML:DOMString)
IXMLDocument.SaveToXML(var-XML:WideString)
为UTF-8生成
编码
属性。但是,
IXMLDocument.SaveToXML(var-XML:UTF8String)
IXMLDocument.SaveToStream()
确实为UTF-8生成了一个
编码属性。

多亏了其他帖子,所以我发现问题是因为
备忘录1.Text
是UFT-16。将最后一行更改为
XMLDoc.SaveToStream(MyStream)
,其中
MyStream:=TFileStream.Create('test.XML',fmCreate或fmOpenWrite)结果文件中包含utf-8指示符。耶。