我用MultiByteToWideChar方法解决没成功
怎么解决汉字的问题啊,比如我用下面的
BYTE byte[]={0x4f,0x53,0xae,0x8b,0xca,0x53,0x0b,0x7a,0x8f,0x5e,0xbe,0x8b,0x00,0x00};
怎样在对话框中显示汉字,望大虾赐教
/*
WORD CICPDlg::Code (char data[],int len)
data:字符数组
len:data长度
1.将按ascii编码的数组转换成unicode编码的数组
2.返回转换后data数组所占字节数*/
WORD CFlashtestDlg::Code (char* data, int len)
{
int maxLen = len*2;
int wcount = 0;
unsigned short * buf = (unsigned short *)malloc(maxLen);
memset(buf , 0 , maxLen );
// transfer
wcount = MultiByteToWideChar(936,MB_PRECOMPOSED,data,len,buf,maxLen);
// Reverse
for (int i=0;i< wcount ;i++ )
Reverse( (char*)buf+2*i , 2 );
memcpy( data , buf , 2*wcount );
free( buf );
return 2*wcount;
}
凋用后data中的数据就已经转换成功
转贴:
int OleDBCom::UnicodeToChar(char *UnicodeText, char *ASCText, unsigned char UnicodeLength)
{
wchar_t UnicodeWCH[100];
int MultiLength = 0;
int WideLength = 0;
unsigned char SMLength = 0;
while(MultiLength < UnicodeLength)
{
UnicodeWCH[WideLength++] = ((unsigned char )UnicodeText[MultiLength] << 8)
+ (unsigned char)UnicodeText[MultiLength+1];
MultiLength += 2;
}
UnicodeWCH[WideLength] = 0;
SMLength = WideCharToMultiByte(CP_ACP, 0, (LPWSTR)UnicodeWCH, WideLength,
(LPSTR)ASCText, 161, NULL, NULL);
return SMLength;
}