我从SIM卡里读出来的数据是“60A8597DFF01”,应为“您好”,我写程序对读出来的原始数据进行译码并输出,可就是乱码,为什么?程序如下:char message1[]="60A8597DFF01";
WCHAR unicode[2];//存放转换的unicode编码
char *ptr=message1;
MultiByteToWideChar(CP_ACP,0,ptr,6,unicode,1);
MultiByteToWideChar(CP_ACP,0,ptr+6,6,unicode+1,1);
WCHAR *gb1=new WCHAR;//存放GB2312码
WCHAR *gb2=new WCHAR;
WideCharToMultiByte(CP_ACP,0,unicode,1,(LPSTR)gb1,sizeof(WCHAR),NULL,NULL);
WideCharToMultiByte(CP_ACP,0,unicode+1,1,(LPSTR)gb2,sizeof(WCHAR),NULL,NULL);
cout<<gb1<<gb2<<endl;应该怎样改正?

解决方案 »

  1.   

    首先确定“60A8597DFF01”是怎样的编码,你直接用
    MultiByteToWideChar能转换吗?
    MultiByteToWideChar和WideCharToMultiByte仅是字符ansi和unicode之间的转换,而非编码之间的转换
    在sim卡中,是如何对字符编码的,这个不搞定,你肯定转换不出来你是的结果了,除非你把它的编码给破译了
      

  2.   

    SIM卡中的汉字编码应该是UTF-8编码的没错,我需要转换成GB2132,至于MultiByteToWideChar和
    WideCharToMultiByte,我网上看了很多资料都是说这样转换得,在本论坛我也曾发过贴问UTF-8和
    GB2312间该怎样转换,别人也是说用这两个函数,如果不是这样,该怎样转换编码?