XercesC将输出设置为UTF-8

XercesC setting output to UTF-8

本文关键字:UTF-8 设置 输出 XercesC      更新时间:2023-10-16

我正在使用XercesC-Lib创建数据的序列化。如何将其设置为UTF-8?它总是用UTF-16生成的,我找不到改变这一点的方法。

xercesc::DOMImplementation *gRegistry = xercesc::DOMImplementationRegistry::getDOMImplementation(X("Core"));
xercesc::DOMDocument *doc = gRegistry->createDocument(
        0,                      // root element namespace URI.
        X(oDocumentName.c_str()),       // root element name
        0);                 // document type object (DTD).
doc->setXmlStandalone(true);
... prepare the document ...
serializer = ((xercesc::DOMImplementationLS *)gRegistry)->createLSSerializer();
serializer->setNewLine(xercesc::XMLString::transcode("n"));
XMLCh *xmlresult = serializer->writeToString(doc);
char *temp = xercesc::XMLString::transcode(xmlresult);
std::string result(temp);
xercesc::XMLString::release(&temp);
xercesc::XMLString::release(&xmlresult);
doc->release();
serializer->release();
getStream() << result.c_str();

当我在Java端使用JAXB进行反序列化时,我总是得到一个content is not allowed in prolog,到目前为止,这是我在XML中看到的唯一区别。当我尝试在JAXB中本地取消rialze时,它是有效的。当我使用XercesCXML时,我会得到这个错误。当我尝试用XML插件在Notepad++中格式化它时,它也会说有错误,但没有告诉我任何细节。

检查DOMLSOutput的使用情况,它应该能满足您的需求。也就是说,您创建了一个要写入的DOMLSOutput对象(而不是使用DOMLSSerializer::writeToString)。