delphi 10 生成XML文件时 无法生成 语言信息 encoding

bluepph 2018-11-25 08:40:39
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"
...全文
118 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
对, 这个我感觉是个BUG 但是一直没修复 使用XML.Text和SaveToXML 都会丢失编码 使用SaveToStream不会 看看我之前做过的测试: https://www.cnblogs.com/lzl_17948876/p/3829183.html
  • 打赏
  • 举报
回复
不是BUG,SaveToXML是存到一个string/WideString/UTF8String,D2009之后string是unicode编码,WideString本来就是unicode编码,如果你指出一个非unicode编码,那xml的内容在string中怎么存?所以它只能去掉xml头的encoding字段,转换为unicode存储。如果你存到UTF8String,那么encoding字段就会出现。

16,748

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 语言基础/算法/系统设计
社区管理员
  • 语言基础/算法/系统设计社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧