以前做开发的过程中,遇到读取文件的情况,基本都是ANSI文件,而没有遇到过UNICODE文件。
最近在读取UNICODE 的文件过程中,却遇到了一些意想不到的问题。
现总结如下:
(1)文件的打开模式,读取ANSI文件时候,fopen(,"r"),CFile(,modeRead),其默认情况下是按文本
模式来进行读取。但是如果在文本模式下去wchar_t去读取数据,却经常发生一些意想不到的错误。
例如,fread,经常结束,即使没有到文件结尾,也无法进行下面的读取。
fgetws,则更是无法工作,读取出来的全是乱码。
(2)memset函数,第三个参数不是Item的个数,而是地址空间的字节数。
例如,char chBuf[30]; memset(szBuf,0,30); 当然没有问题。因为,sizeof(char) = 1;
但是wchar_t wchBuf[30];memset(wchBuf,0,30),出现的情况则是,只是对前15个字节进行了
赋值。因为,sizoef(wchar_t) = 2,正确的写法为:memset(wchBuf,0,30*sizeof(wchar_t));