比如“大”字。    int val = '大';  那么val的值就是 46323    但通过MFC程序界面上输入的字符串,截取出来的“大”字,值却是 22823    这是怎么回事? 怎样才能统一?

解决方案 »

  1.   

    UTF-8(UTF8EncodeURI)和GB2312(GBKEncodeURI)
      

  2.   

    46323 是 GB 码
    22823 是 unicode 码
      

  3.   

    GB码可以调用 MultiByteToWideChar 转换成 unicode 码
      

  4.   

    楼上正解,这是不同编码的问题。
    利用Unicode编码支持更多国家的语言,有利于编写国际性的程序。
      

  5.   

    int val = '大' 46323
    int val = L'大' 22823
      

  6.   

    int val = '大';   // 这个是MBCS 
    int val2 = L'大'; // 这个才是Unicode
      

  7.   


      那怎样才能将Unicode转化成国标码呢?
      

  8.   


      那如何把GB2312码(widechartomultibyte转化后是char*了),像vb的Asc函数一样,将它转成数字(字符代码)呢?!
      

  9.   


    wchar_t a = L'大';
    char b[2];
    WideCharToMultiByte ( CP_ACP ,0 ,&a ,1 ,b ,2 ,NULL ,NULL );
    DWORD dwUnicode = ((byte)b[0] << 8) + (byte)b[1] ;得到'大'的unicode码
      

  10.   

    打错了,乱了,重发吧!
    wchar_t a = L'大';
    wchar_t c = '大';
    char b[2];
    WideCharToMultiByte ( CP_ACP ,0 ,&a ,1 ,b ,2 ,NULL ,NULL );
    DWORD dwGB2312 = ((byte)b[0] << 8) + (byte)b[1] ;//得到GB码
      

  11.   

    MBCS指的是多字符集
    ascll是1个字符
    汉字是2个字符
    Unicode都是2字符Unicode含有编码的意识 它分配了编码
    gb,大五码都是编码wide char to multi byte
    是宽字符(2字符)转多字符集