我怎么得到encoding =“utf-8”?>在txmldocument.xml中?

时间:2013-10-24 16:59:53

标签: 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;

我仍然没有在生成的文档中获得encoding="utf-8"?>。但如果我说

  XMLDoc.Encoding := 'utf-16';

然后我在生成的文档中得到encoding="utf-16"?>

有什么想法吗?任何人吗?

1 个答案:

答案 0 :(得分:6)

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

AFAIK,无法强制IXMLDocument.XML.TextIXMLDocument.SaveToXML(var XML: DOMString)IXMLDocument.SaveToXML(var XML: WideString)为UTF-8生成encoding属性。但是,IXMLDocument.SaveToXML(var XML: UTF8String)IXMLDocument.SaveToStream()会为UTF-8生成encoding属性。