XercesC Lib을 사용하여 데이터 직렬화를 만듭니다. 어떻게 UTF-8로 설정할 수 있습니까? 항상 UTF-16으로 생성되며이를 변경하는 방법을 찾을 수 없습니다.XercesC 설정 출력을 UTF-8로
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();
내가 자바 측면에서 JAXB와 역 직렬화 때, 나는 항상 content is not allowed in prolog
을 얻고 지금까지 내가 XML에서 볼 수있는 유일한 차이점입니다. JAXB에서 로컬로 역 직렬화하려고하면 작동합니다. 내 XercesC XML을 가져 가면이 오류가 발생합니다. 메모장에서 XML 플러그인을 사용하여 형식을 지정하려고하면 오류가 있음을 나타내지 만 세부 정보는 알려주지 않습니다.
잘 모르겠습니다 만, 아마 ICU lib로 XercesC를 빌드해야합니다. 트랜스 코더 옵션에 대한 지침은 여기를 참조하십시오. http://xerces.apache.org/xerces-c/build-3.html –