读书人

在Unicode条件下quot;中国quot;的内码是:0xd0d

发布时间: 2012-02-02 23:57:14 作者: rapoo

在Unicode条件下"中国"的内码是:0xd0d6,0xfab9,而在MBCS时是0x4e2d, 0x56fd,请问如何互相转换
在Unicode条件下 "中国 "的内码是:0xd0d6,0xfab9,而在MBCS时是0x4e2d, 0x56fd,请问如何互相转换
我写的程序是Unicode的,但在读取一个ANSI的字符串进行比较时出了问题,两个相同的字符串由于采用了不同内码而不能正确的比较,所以我想将其中一个汉字的内码进行转换以便于比较。

[解决办法]

#include <stdio.h>
#include <windows.h>

wchar_t s1[] = L "中国 ";
char s2[] = "中国 ";

char s3[10];
wchar_t s4[10];

int main()
{
for(int i=0;i <2;i++)
printf( "%04x ",s1[i]);
printf( "\n ");

for(int i=0;i <4;i++)
printf( "%02x ",(unsigned char)s2[i]);
printf( "\n ");

WideCharToMultiByte(CP_ACP,0,s1,2,s3,10,0,0);
MultiByteToWideChar(CP_ACP,0,s2,4,s4,10);

for(int i=0;i <4;i++)
printf( "%02x ",(unsigned char)s3[i]);
printf( "\n ");

for(int i=0;i <2;i++)
printf( "%04x ",s4[i]);
printf( "\n ");

}

[解决办法]
http://noshape.bokee.com/4749054.html

读书人网 >VC/MFC

热点推荐