在非UNICODE环境下(多字节工程)使用CFileStdio读取非UNICODE文件,只有中文字符显示为乱码?
很奇怪?为什么?什么方式都试过,都不正确?原因究竟是什么?

解决方案 »

  1.   

    读完后的数据这么赋值试试:
    char d[2];
    d[0]=第一个值;
    d[1]=第二个值;
    char* p;
    p=(char*)d;
    就是你把读出来的中文数据赋给d,然后再用p显示试试
      

  2.   

    你的文件是什么编码的?必须是ANSI或UNICODE这两种编码才行,UTF-8和UTF-16才行。
    另外,不管你的工程是不是UNICODE,如果你的文件是ANSI编码的,要用CHAR缓冲区接收,如果你的文件是UNICODE编码的,要用WCHAR缓冲区来接收。这样才能正常显示中文。或者接收后+=到CString对象里,它会自动转换,正常显示。
      

  3.   

    你的文件是什么编码的?必须是ANSI或UNICODE这两种编码才行,UTF-8和UTF-16不行(读取后需要调用API函数转换)。
     另外,不管你的工程是不是UNICODE,如果你的文件是ANSI编码的,要用CHAR缓冲区接收,如果你的文件是UNICODE编码的,要用WCHAR缓冲区来接收。这样才能正常显示中文。或者接收后+=到CString对象里,它会自动转换,正常显示。 
      

  4.   

    你的文件是什么编码的?必须是ANSI或UNICODE这两种编码才行,UTF-8和UTF-32不行(读取后需要调用API函数转换)。
     另外,不管你的工程是不是UNICODE,如果你的文件是ANSI编码的,要用CHAR缓冲区接收,如果你的文件是UNICODE编码的,要用WCHAR缓冲区来接收。这样才能正常显示中文。或者接收后+=到CString对象里,它会自动转换,正常显示。  
      

  5.   

    文件是ANSI编码,用以下代码读取,发现只有中文是乱码://打开文件.
    CStdioFile  Script;
    if (!Script.Open(strFileName, CFile::typeText|CFile::modeRead))
    {
    return;
    } CString Line;
    while (Script.ReadString(Line))
    {
         Line += _T("\r\n");
    } //关闭文件.
    Script.Close();
    只要遇到中文,Line中的内容就显示乱码.
      

  6.   

    文件是ANSI编码,在非UNICODE环境下(多字节工程),用你的代码中文可以显示