delphi 7 下正常 berlin tokyo均无效
示例代码如下          aXml.BackXml.Active := True;
          aXml.BackXml.Version := '1.0';
          aXml.BackXml.Encoding :='GBK';          aXml.XmlNode :=aXml.BackXml.CreateNode('document');
          aXml.BackXml.DocumentElement := aXml.XmlNode;
          aXml.XmlHead := aXml.BackXml.CreateNode('head');
          aXml.XmlNode.ChildNodes.Add(aXml.XmlHead);
          //交易代码
          aXml.XmlNodeSecond:=aXml.BackXml.CreateNode('trans_type');
          aXml.XmlHead.ChildNodes.Add(aXml.XmlNodeSecond);
          aXml.XmlNodeSecond.Text:='100';
输出显示结果 
<?xml version="1.0"?>
<document><head><trans_type>100</trans_type></head></document>正常应该是 
<?xml version="1.0" encoding="GBK"?><document><head><trans_type>100</trans_type></head></document>少了  encoding="GBK"

解决方案 »

  1.   

    对, 这个我感觉是个BUG 但是一直没修复
    使用XML.Text和SaveToXML 都会丢失编码
    使用SaveToStream不会看看我之前做过的测试: https://www.cnblogs.com/lzl_17948876/p/3829183.html
      

  2.   

    不是BUG,SaveToXML是存到一个string/WideString/UTF8String,D2009之后string是unicode编码,WideString本来就是unicode编码,如果你指出一个非unicode编码,那xml的内容在string中怎么存?所以它只能去掉xml头的encoding字段,转换为unicode存储。如果你存到UTF8String,那么encoding字段就会出现。