MSXML4 и установка строки кодирования
Я использовал MSXML4 для генерации XML.
Я пытаюсь установить значение кодировки в UTF-8.
Вот мой код:
const _bstr_t k_XML_Tag_Name ("xml");
const _bstr_t k_Processing_Tag_Name ("version=\"1.0\" encoding=\"utf-8\"");
MSXML2::IXMLDOMProcessingInstructionPtr pProccessingInstruction = m_pXmlDoc->createProcessingInstruction(k_XML_Tag_Name, k_Processing_Tag_Name);
HRESULT result = m_pXmlDoc->appendChild(pProccessingInstruction);
result
всегда S_FALSE
и строка предварительной обработки:
<?xml version="1.0"?>
Итак, почему не отображается строка кодирования?
1 ответ
При сохранении XML в файл вы должны увидеть <?xml version="1.0" encoding="UTF-8"?>
декларация. Однако, согласно этой статье, когда вы используете XML
Свойство документа, возвращаемого декларацией, не содержит кодировку, которая, по-видимому, является заданной. Это поведение, с которым вы сталкиваетесь? В статье говорится, что:
Это нормально. Это произошло потому, что вы можете повернуться и вызвать LoadXML с этой строкой, и она будет работать. Если этого не сделать, LoadXML завершится ошибкой с сообщением об ошибке: "Переключение с текущей кодировки на указанную кодировку не поддерживается".