#include <stdio.h>
#include <stdlib.h>
#include <locale.h>
int EncodeUCS2(unsigned char *SourceBuf,unsigned char *DestBuf)
{
int len,i,j=0;
wchar_t wcbuf[255];
setlocale(LC_ALL,"");
len = mbstowcs(wcbuf,SourceBuf,255); /* convert mutibytes string to wide charater string */
for (i=0;i<len;i++)
{
DestBuf[j++] = wcbuf[i]>>8; /* height byte */
DestBuf[j++] = wcbuf[i]&0xff; /* low byte */
}
return len*2;
}
int DecodeUCS2(unsigned char *SourceBuf,unsigned char *DestBuf,int len)
{
wchar_t wcbuf[255];
int i;
setlocale(LC_ALL,"");
for( i=0;i<len/2;i++ ) {
wcbuf[i]=SourceBuf[2*i]; // height byte
wcbuf[i]=(wcbuf[i]<<8)+SourceBuf[2*i+1]; // low byte
}
return wcstombs(DestBuf,wcbuf,len); /* convert wide charater string to mutibytes string */
}
int main()
{
unsigned char str[1024],str2[1024];
int len,i;
len=EncodeUCS2("新年快乐");
for(i=0;i<len;i++ ) printf("%02X",str[i]); printf("/n");
DecodeUCS2(str,str2,len);
puts(str2);
}