我的程序会生成文件,也会将生成的文件重新读回来。
所以在保存的时候是Unicode编码,但是读取的话ReadString() 就只能读取ASCII到编码,否则为乱码。或者有其他什么简单快速的方法?~  顺便祝大家中秋快乐呀~

解决方案 »

  1.   

    不用关心读取的数据是什么,读取出来强制转换成wchar_t*类型就行,文件的开头2个字节0xff 0xfe要忽略估计LZ的工程是ansi,然后是用ReadString() 读取进一个CString类型吧?这样的话就不太方便了,因为非unicode工程的CString对应的是char,可以考虑用ReadString()另外一个重载函数读取到一个char数组,然后强制转换成wchar_t*类型,用CStringW来构造CString字串
      

  2.   

    这有两个函数!
    第一个是将Unicode变成ASCII   
    第二个是将ASCII变成Unicode   
    你可以将Unicode变成ASCII后进行操作,然后再ASCII变成Unicode保存   
        
      inline LPTSTR B2A(BSTR   lp)   
      {   
          int   nLen=(lstrlenW(lp)+1)<<1;   
          LPTSTR   str=new   char[nLen];   
          WideCharToMultiByte(CP_ACP,   0,   lp,   -1,   str,   nLen,   NULL,   NULL);   
          return   str;   
      }   
       
      inline BSTR A2B(LPCSTR   lp)   
      {   
          int nLen  = lstrlen(lp)>>1-1;   
          BSTR   str = ::SysAllocStringLen(NULL, nLen);   
          MultiByteToWideChar(CP_ACP,   0,   lp,   -1,   str,   nLen);   
          return   str;   
      }   
      

  3.   

    读出来自己用MultlByteToWideChar来转换。
      

  4.   

    (1)用CArchive读写
    (2)将"Character Set"选为:"Use Multi-Byte Character Set",用CStdioFile读写