Search This Blog

Wednesday, July 6, 2011

Xerces Serialize XML data and encoding

the next code works fine on Xerces 2.6 - helper function to convert bytes  to utf8 format.

void convertToUTF8(const XMLCh* buffer, CString &utf8_string)
{
XMLTranscoder* utf8Transcoder;
XMLTransService::Codes failReason;
utf8Transcoder = XMLPlatformUtils::fgTransService->makeNewTranscoderFor("UTF-8", failReason, 16*1024);
size_t len = XMLString::stringLen(buffer);
XMLByte* utf8 = new XMLByte[(len*MB_LEN_MAX)+1];
unsigned int eaten;
unsigned int utf8Len = utf8Transcoder->transcodeTo((buffer), len, utf8, len*MB_LEN_MAX, eaten, XMLTranscoder::UnRep_Throw);
utf8[utf8Len] = '\0';
utf8_string = (char*)utf8;
delete[] utf8;
delete utf8Transcoder;
}
good article 
Serialize XML data

No comments: