Delphi 我如何获得编码=“;utf-8“&燃气轮机;在txmldocument.xml中?
这在Delphi XE2中对我不起作用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; 我仍然没有在生成的文档
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指示符。耶。