使用MSXML6无法加载带有UTF-8 BOM标记的XML文件

时间:2012-03-08 08:34:04

标签: c++ unicode utf-8 msxml

我有一个XML文件,其开头有UTF-8 BOM标记(EF BB BF)。

它还包含encoding <?xml version="1.0" encoding="UTF-8" ?>

我正在尝试使用IXMLDOMDocument::LoadXML加载此XML文件,但无法加载此文档。如果我删除BOM标记,它可以完美地工作。

我的问题在这种情况下使用BOM标记是错误的还是MSXML的错误(确切地说是MSXML6)?

1 个答案:

答案 0 :(得分:5)

IXMLDOMDocument::loadXML方法需要BSTR,它是UTF-16编码的。有关该问题的讨论,请参阅this page

我建议改用IXMLDOMDocument::load,它有各种不需要UTF-16的重载。