2

这对我在 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"?>了生成的文档。

有任何想法吗?任何人?

4

1 回答 1

6

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

AFAIK ,没有办法强制IXMLDocument.XML.Text或生成UTF-8 的属性。但是,确实为 UTF-8生成一个属性。IXMLDocument.SaveToXML(var XML: DOMString)IXMLDocument.SaveToXML(var XML: WideString)encodingIXMLDocument.SaveToXML(var XML: UTF8String)IXMLDocument.SaveToStream()encoding

于 2013-10-24T17:23:53.920 回答