在Unicode条件下"中国"的内码是:0xd0d6,0xfab9,而在MBCS时是0x4e2d, 0x56fd,请问如何互相转换

寒雪叔叔 2007-08-02 09:26:33
在Unicode条件下"中国"的内码是:0xd0d6,0xfab9,而在MBCS时是0x4e2d, 0x56fd,请问如何互相转换
我写的程序是Unicode的,但在读取一个ANSI的字符串进行比较时出了问题,两个相同的字符串由于采用了不同内码而不能正确的比较,所以我想将其中一个汉字的内码进行转换以便于比较。
...全文
326 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
寒雪叔叔 2007-08-02
  • 打赏
  • 举报
回复
感谢感谢,马上结贴
WindAndSnow 2007-08-02
  • 打赏
  • 举报
回复
DL
yxz_lp 2007-08-02
  • 打赏
  • 举报
回复
http://noshape.bokee.com/4749054.html
david2083 2007-08-02
  • 打赏
  • 举报
回复

#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");

}
寒雪叔叔 2007-08-02
  • 打赏
  • 举报
回复

不好意思,上面内码示例我搞反了,应该是Unicode条件下“中国”的内码是0x4e2d, 0x56fd,而MBCS时是:0xd0d6,0xfab9!!!



我试图用WideCharToMultiByte来进行转换,但不行,这个函数似乎只是简单的将一个汉字转成了相同值的两个字符,比如"中"转成了[0xd6][0xd0],而我想得到的是[0x2d][0x4e]




15,978

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧