繁体   English   中英

MSXML删除了encoding =“ UTF-8”属性

[英]MSXML removes the encoding=“UTF-8” attribute

我正在从文件中读取以下XML文本:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<SampleXML>...</SampleXML>

然后使用IXMLDomDocument :: loadXML加载UTF-8文本。 然后,我操纵XML并调用IXMLDomDocument :: Getxml()以获取修改后的XML的_bstr_t。 _bstr_t如下所示:

<?xml version="1.0" standalone="yes"?>
<ModifiedSampleXML>...</ModifiedSampleXML>

标头中的encoding =“ UTF-8”属性消失了。 但是,如果我调用IXMLDomDocument :: save(FileName)将XML保存到文件中,则当我打开文件时,会看到保留了encoding =“ UTF-8”属性。

为什么在我调用Getxml()时没有encoding =“ UTF-8”属性? 如何告诉MSXML始终保留此属性? (不仅是保存时)

删除了属性“ encoding ='UTF-8'”,因为Getxml()以宽字符(16位)字符串返回已加载的XML。 您可以通过查看返回的_bstr_t拥有的内存来验证这一点。

MSXML保留实际上是16位的编码为8位的属性,这是不正确的。

但是,如果加载具有“ encoding ='UTF-16'”属性的unicode xml文件,则会看到Getxml()不会删除该属性。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM