int AnsiToWide(const unsigned char *src, const int srcSize, unsigned short *des, int *desSize)
{
Err err = errNone;
UInt16 lenSrc = srcSize;
UInt16 lenDst = *desSize;
UInt32 encoding;
UInt16 i=1;
FtrGet(sysFtrCreator, sysFtrNumEncoding, &encoding);
err = TxtConvertEncoding(
true,
NULL,
(Char*)src,
&lenSrc,
CHAR_ENCODING_VALUE(encoding),
(char *) des,
&lenDst,
charEncodingUCS2,
"?",i
);
return (lenDst/sizeof(wchar_t));
}
////////////////////////////////////////////////////////////////////////////////
int WideToAnsi(const unsigned short *src, const int srcSize, unsigned char *des, int *desSize)
{
Err err = errNone;
UInt16 lenSrc = srcSize*sizeof(wchar_t);
UInt16 lenDst = *desSize+1; // lets' include \0
UInt32 encoding;
err=FtrGet(sysFtrCreator, sysFtrNumEncoding, &encoding);
err = TxtConvertEncoding(
true,
NULL,
(Char*)src,
&lenSrc,
charEncodingUTF16BE,
(char *)des,
&lenDst,
charEncodingGB2312,
"?",
1
);
*desSize=lenDst;
return ((lenDst)/sizeof(wchar_t));
}