EVC Unicode 在EVC中如何读取Unicode格式文件的内容??急急急急急急急急急急急急急急急急急急急急!!!!!!!!!!!! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 问题没有说明清楚。EVC中,字符都是UNICODE的。 抱歉,EVC中,字符都是Unicode的,在文件的开头加了0xFF,和0xFE两个字节的内容,我的想一行一行的将其读取出来,怎么跳过这两个字节;我用的是fgetws读取行,可是文件能打开,读出的却是乱码,请多多指教 不对,这个问题不是这么容易的。ReadFile我已试验过,不行。你还有别的方法吗?或你的ReadFile是怎么用的?提供下源码,谢谢编程不要想当然的 主要涉及两个问题,一个是在EVC中都是Unicode编码,故在其中加了0xFEFF等两个字节的内容,不好处理;另一个是,EVC本身问题:在VC++6.0中的函数在EVC中不一定能行,比如说CStdioFile等,你不要想象的那么简单,呵呵 在打开文件后读一个WORD,或直接用SetFilePointer之类的跳过这两个字节。 CStdioFile,fgetws在底层应该调的还是ReadFile 在打开文件后读一个WORD,或直接用SetFilePointer之类的跳过这两个字节。------------------------------------------------------------这个能行的通吗?不知有人试验过没有?——————————————————————————————————我现在已初步实现了文件读取,但只能读一行 ,(我实现的方法是:用fgetws获得一行,然后进行宽字节的转化,wchar_t,最后读出出来即可,用while ( !feof(stream)来判断文件是否结束,但这点行不通)但只能读一行, 怎么判断文件结束?我用feof判断,不行,难道这也跟Unicode编码有关?请多指教至于ReadFile我还是认为行不通,如哪位搞定的话,能提供出源码供大家讨论就再好不过了 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); 谢谢,问下,RtlZeroMemory这个是什么呢?EVC和VC++6.0还是不同的,不知道可行否 你这个也是按VC++6.0写的,_T("E:\\1.txt")的写法是不对的,因为在EVC开发中是没有相对路径的 你这个也是按VC++6.0写的,_T("E:\\1.txt")的写法是不对的,因为在EVC开发中是没有相对路径的 你这个也是按VC++6.0写的,_T("E:\\1.txt")的写法是不对的,因为在EVC开发中是没有相对路径的 你是在VC++6.0环境下写的吧?我是指读取Unicode格式文件,在EVC中,像_T("E:\\1.txt")这样的写法是不正确的,因为其是没有相对路径的 你是在VC++6.0环境下写的吧?我是指读取Unicode格式文件,在EVC中,像_T("E:\\1.txt")这样的写法是不正确的,因为其是没有相对路径的 你是在VC++6.0环境下写的吧?我是指读取Unicode格式文件,在EVC中,像_T("E:\\1.txt")这样的写法是不正确的,因为其是没有相对路径的 呵呵,在DDK中写习惯了。就是个内存清零,换用ZeroMemory或memset都可以。 CreateProcessAsUser失败,返回1314,表示权限不足,寻找解决方法 VS2010下状态栏显示字体颜色 两个类包含引用引起的问题 紧急!求vc数据库编程三部曲源代码!! 怎样才能用MFC创建没有菜单和工具栏的应用程序? 各位大虾:刻录机怎么操作? 急,有关窗口尺寸的问题 如何模拟击键并发送给directx应用程序 AsyncSelect什么时候调用合适? SetOutPut总是说我串口没有打开 我写的一个数据库操作类,请各位高手批批 send之后马上closesocket,会不会影响对方的recv?
ReadFile我已试验过,不行。
你还有别的方法吗?或你的ReadFile是怎么用的?提供下源码,谢谢
编程不要想当然的
另一个是,EVC本身问题:在VC++6.0中的函数在EVC中不一定能行,比如说CStdioFile等,
你不要想象的那么简单,呵呵
------------------------------------------------------------
这个能行的通吗?不知有人试验过没有?
——————————————————————————————————
我现在已初步实现了文件读取,但只能读一行 ,(我实现的方法是:用fgetws获得一行,然后进行宽字节的转化,wchar_t,最后读出出来即可,用while ( !feof(stream)来判断文件是否结束,但这点行不通)
但只能读一行, 怎么判断文件结束?我用feof判断,不行,
难道这也跟Unicode编码有关?请多指教至于ReadFile我还是认为行不通,如哪位搞定的话,能提供出源码供大家讨论就再好不过了
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);