本帖最后由 awenson 于 2009-11-15 17:08:27 编辑

解决方案 »

  1.   

    #include <iostream.h>
    #include <fstream>
    #include <string>
    using namespace std;
    int main()
    {
        ifstream ifile("xxx.txt");
        char buf[100];
        ifile.getline(buf,100);
        cout<<buf;  // 此处读出的英文和数字正常,中文乱码
    }
    这个程序测试结果:
    txt为ansi,中文正常显示。unicode,utf-8,unicode big endian中文不能正常显示。
      

  2.   

    不好意思啊,弄错了
    我程序中是使用宽字符。
    wifstream ifile(L"C:\\xxx.txt");
    wchar_t buf[MAX_PATH] = {0};ifile.getline(buf, MAX_PATH);  // 此处读出的英文和数字正常,中文乱码
    使用多字节是正常的,使用宽字符反而有问题
      

  3.   

    宽字符要指定字符集,setlocale(LC_CTYPE, ""); 加在函数头
      

  4.   


    嗯,可以设置locale,这样的话也能解决:ifile.imbue(locale("chs"));
      

  5.   


    不行的,使用Unicode的话还要codecvt。
      

  6.   

    谁能提供使用Unicode文件的方法?