在vs2008下,工程用unicode码 ,想把c:/1.txt读入编辑框,但结果是乱码,代码如下,求原因,即解决方法                  CFile file(_T("C:\\1.TXT") ,CFile::modeRead); TCHAR *buf=new TCHAR [file.GetLength()]; file.Read(buf,file.GetLength() ); SetDlgItemText(IDC_EDIT1, buf);
 
file.Close();

解决方案 »

  1.   

    你的1.TXT是什么编码方式,建议你将读出来的数据转换一次,buf先用char *,然后做一次转化
      

  2.   

    1.txt 是asi码,怎么转换啊,求代码,谢谢了
      

  3.   

    把ASCII字符串读出来,然后ConvertStringToBSTR
      

  4.   

    ansi的字符读到UNICODE串中当然出错了,buf先定义成char *的,读到buf之后用WideCharToMultiByte转成UNICODE
      

  5.   

    size_t mbstowcs( wchar_t *wcstr, const char *mbstr, size_t count );
    函数也可以,你自己选一个写就行了
      

  6.   

    TCHAR *buf=new TCHAR [file.GetLength()]; 
    改为TCHAR *buf=new TCHAR [file.GetLength()+1]; 然后memset(buf,file.GetLength()+1,0);
    试试行不行。
      

  7.   

    转成多字节可以,不过工程使用的是unicode码,不能转,WideCharToMultiByte()怎么用,求给个代码范例
      

  8.   

    分都舍不得,更别提钱了!
    TCHAR *buf=new TCHAR [file.GetLength()]; file.Read(buf,file.GetLength() ); char *pp;
    pp=W2A(buf);
    SetDlgItemText(IDC_EDIT1, pp); 
        
      

  9.   

    不好意思,上面说反了,应该用int MultiByteToWideChar( 
    UINT CodePage, 
    DWORD dwFlags, 
    LPCSTR lpMultiByteStr, 
    int cbMultiByte, 
    LPWSTR lpWideCharStr, 
    int cchWideChar 
    ); 
    多字节转成宽字节,因为你的工程是UNICODE
      

  10.   

    USES_CONVERSION;
    需要加入,然后才能使用W2A
      

  11.   

     
    SetDlgItemText(IDC_EDIT1, pp); 不行吧,第二个参数需要的是LPCTSTR阿
      

  12.   

    这个我以前在mobile上作过
    用了一个很笨的方法
    不过很有效
    你可以参考一下BOOL ReadFile(CString strPath)
    {
    CFile fileRead;
    char bufRead[3];
    char* pBufFile;
    UINT nLength; //打开文件
    if(!fileRead.Open(strPath, CFile::modeRead))
    return false; //数据准备
    m_strData = _T(""); // 清空原数据流
    nLength = (UINT)fileRead.GetLength(); // 文件长度
    //读取文件
    pBufFile = new char[nLength];
    fileRead.Read(pBufFile, nLength);
    //读取文件
    for(int i=0; i<nLength; i++)
    {
    bufRead[0] = pBufFile[i];
    if(BYTE(bufRead[0])>0x7F)
    {
    bufRead[1] = pBufFile[++i];
    bufRead[2] = '\0';
    }else
    {
    bufRead[1] = '\0';
    }
    m_strData += bufRead;
    }
    delete pBufFile;
    //关闭文件
    fileRead.Close(); return true;
    }
      

  13.   

    给你写段代码吧,看你请吃饭的份上:
    int nChars;
    CFile file(_T("C:\\1.TXT") ,CFile::modeRead); 
    char *buf=new char [file.GetLength()];
    file.Read(buf,file.GetLength()); 
    nChars=MultiByteToWideChar(CP_ACP,0,buf,-1,NULL,0);  //获取宽字节所需的缓冲区长度。 TCHAR *buff=new TCHAR [nChars];
    MultiByteToWideChar(CP_ACP,0,buf,-1,buff,nChars); SetDlgItemText(IDC_EDIT1, buff);  file.Close();
      

  14.   

    分一定给,我以前用的是vc6.0现在工作需要改为vs2008,我发现百分之七八十的错误,都是unicode的问题,很想请教你,qq聊,行吗?真心愿请你吃饭,我很讲诚信的
      

  15.   

    我QQ:649695793,不过很少上,公司要求上班时间不许上QQ的