我把程序贴出来大家帮我看看,谢谢了!    CFile file;
CFileException efile;

long length;
LPSTR szBuf;
TCHAR* path=_T("\\test01.txt");
CString FileStr; if (!file.Open(path,CFile::modeRead,&efile))
{
AfxMessageBox(_T("open CountGcodeline path error"));
}

length=file.GetLength();

szBuf=(LPSTR)FileStr.GetBuffer(length+1); if(szBuf!=NULL)
{
file.Read(szBuf, file.GetLength());
szBuf[length]=_T('\0');

FileStr.ReleaseBuffer();
}  

file.Close();

解决方案 »

  1.   

    你的项目所使用的字符集要与txt文件的字符集相同,如果不同则需要用MultiByteToWideChar/WideCharToMultiByte来转换字符串。
    另外,Unicode编码的txt文件以0xff、0xfe两个字节作为开头标记。
      

  2.   

    先生成的文本确实是unicode的
    我已经把它转成了ANSI了
    我现在是读的ANSI的文本  有点不明白了 我感觉也没问题啊...
      

  3.   

    应该是字符集的问题,看看txt是什么字符集,程序用什么字符集
      

  4.   

    如果文本文件用的是ansi的话,那肯定是程序中设置了unicode。
      

  5.   

    我是在EVC下编的 应该是unicode楼上几位的意思是 CFile read的时候是按unicode读的是吧?所以是乱码...
      

  6.   

    不是CFile的问题,是CString的问题,项目的字符集设置为Unicode,CString就用来保存Unicode字符串,此时如果你把Ansi字符串读入CString的缓冲区,就会是乱码。你可以先把文件读到一个char型数组里面,然后再用MultiByteToWideChar转成Unicode字符串,或者把txt文件改成Unicode编码,不过要注意开头的0xff、0xfe标记。