在EVC中如何读取Unicode格式文件的内容??急急急急急急急急急急急急急急急急急急急急!!!!!!!!!!!!

解决方案 »

  1.   

    问题没有说明清楚。EVC中,字符都是UNICODE的。
      

  2.   

    抱歉,EVC中,字符都是Unicode的,在文件的开头加了0xFF,和0xFE两个字节的内容,我的想一行一行的将其读取出来,怎么跳过这两个字节;我用的是fgetws读取行,可是文件能打开,读出的却是乱码,请多多指教
      

  3.   

    不对,这个问题不是这么容易的。
    ReadFile我已试验过,不行。
    你还有别的方法吗?或你的ReadFile是怎么用的?提供下源码,谢谢
    编程不要想当然的
      

  4.   

    主要涉及两个问题,一个是在EVC中都是Unicode编码,故在其中加了0xFEFF等两个字节的内容,不好处理;
    另一个是,EVC本身问题:在VC++6.0中的函数在EVC中不一定能行,比如说CStdioFile等,
    你不要想象的那么简单,呵呵
      

  5.   

    在打开文件后读一个WORD,或直接用SetFilePointer之类的跳过这两个字节。
      

  6.   

    CStdioFile,fgetws在底层应该调的还是ReadFile
      

  7.   

    在打开文件后读一个WORD,或直接用SetFilePointer之类的跳过这两个字节。
    ------------------------------------------------------------
    这个能行的通吗?不知有人试验过没有?
    ——————————————————————————————————
    我现在已初步实现了文件读取,但只能读一行 ,(我实现的方法是:用fgetws获得一行,然后进行宽字节的转化,wchar_t,最后读出出来即可,用while ( !feof(stream)来判断文件是否结束,但这点行不通)
    但只能读一行, 怎么判断文件结束?我用feof判断,不行,
    难道这也跟Unicode编码有关?请多指教至于ReadFile我还是认为行不通,如哪位搞定的话,能提供出源码供大家讨论就再好不过了
      

  8.   

    HANDLE hFile = CreateFile(_T("E:\\1.txt"), GENERIC_READ, FILE_SHARE_READ,
        NULL, OPEN_EXISTING, 0, NULL);WORD    wHeader;
    DWORD   dwRead;
    ReadFile(hFile, &wHeader, sizeof(WORD), &dwRead, NULL);
    assert(0xfeff == wHeader);DWORD   dwSize  = GetFileSize(hFile, NULL);
    LPWSTR  p       = new WCHAR[dwSize / sizeof(WCHAR)];
    RtlZeroMemory(p, dwSize);
    ReadFile(hFile, p, dwSize - sizeof(WORD), &dwRead, NULL); 
    // 现在可以用watch来看p的值了delete [] p;
    CloseHandle(hFile);
      

  9.   

    谢谢,问下,RtlZeroMemory这个是什么呢?EVC和VC++6.0还是不同的,不知道可行否
      

  10.   

    你这个也是按VC++6.0写的,_T("E:\\1.txt")的写法是不对的,因为在EVC开发中是没有相对路径的
      

  11.   

    你这个也是按VC++6.0写的,_T("E:\\1.txt")的写法是不对的,因为在EVC开发中是没有相对路径的
      

  12.   

    你这个也是按VC++6.0写的,_T("E:\\1.txt")的写法是不对的,因为在EVC开发中是没有相对路径的
      

  13.   

    你是在VC++6.0环境下写的吧?我是指读取Unicode格式文件,在EVC中,像_T("E:\\1.txt")这样的写法是不正确的,因为其是没有相对路径的
      

  14.   

    你是在VC++6.0环境下写的吧?我是指读取Unicode格式文件,在EVC中,像_T("E:\\1.txt")这样的写法是不正确的,因为其是没有相对路径的
      

  15.   

    你是在VC++6.0环境下写的吧?我是指读取Unicode格式文件,在EVC中,像_T("E:\\1.txt")这样的写法是不正确的,因为其是没有相对路径的
      

  16.   

    呵呵,在DDK中写习惯了。就是个内存清零,换用ZeroMemory或memset都可以。