Alberto Massari wrote:
> 
> As you can read here 
> http://xerces.apache.org/xerces-c/apiDocs/classXMLTranscoder.html#b9d5409d562aa54f99dc01617091c457,
>  
> the signature is
> 
> virtual unsigned int XMLTranscoder::transcodeFrom( const XMLByte 
> <http://xerces.apache.org/xerces-c/apiDocs/XercesDefs_8hpp.html#7470c7a32c59355685ebcd878a33f126>
>  
> *const srcData, const unsigned int srcCount, XMLCh *const toFill, const 
> unsigned int /maxChars/, unsigned int & /bytesEaten/, unsigned char 
> *const /charSizes)/
> //
> //It takes XMLByte* (i.e. unsigned char*, that you should get from 
> std::string.c_str() ) and fills an XMLCh buffer of maxChars.
> 
> Alberto
> 

Hi, first of all, thanks for your reply
I tried to use the "transcodeFrom" function using the following code:

XMLByte* xmlBytes = (unsigned char*)MY_STRING.c_str();
size_t stringLength = str.length();
XMLCh* xmlChars = new XMLCh[stringLength];

XMLTranscoder* utf8Transcoder ;
XMLTransService::Codes failReason;
utf8Transcoder =
XMLPlatformUtils::fgTransService->makeNewTranscoderFor("UTF-8", failReason,
16*1024);

unsigned int eaten;
unsigned char* charSizes = new unsigned char[stringLength];
unsigned int xmlCharsLength = utf8Transcoder->transcodeFrom(xmlBytes,
stringLength, xmlChars, stringLength, eaten, charSize);

delete[] charSizes;
delete utf8Transcoder;
...
XMLString::release(xmlChars);

The problem with this code is that for each string that i transcode i get
some weird chars from the right side. For example, if i transcode the string
"Hello", then my XMLCh* will be "Hello$$$$". 
I tried the place a null ('\0') at the end of the XMLCh but it causes an
exception to be thrown when i try to call XMLString::release, to deallocate
it's memory.

How can i solve this?
again, thanks for your help :)
-- 
View this message in context: 
http://www.nabble.com/Converting-XMLCh*-to-std%3A%3Astring-with-encoding-tf4807661.html#a14125854
Sent from the Xerces - C - Users mailing list archive at Nabble.com.

Reply via email to