用Format转化的问题
我用readfile读了一段数据
再用format转化后,为什么会有乱码?
LPCWSTR fname1 = L"c:\\12.nfo";
TCHAR buf[1000] = {0,};
CString ResponseText;
HANDLE fh1=CreateFile(fname1,
GENERIC_READ,
FILE_SHARE_READ|FILE_SHARE_WRITE|FILE_SHARE_DELETE,
0,
OPEN_EXISTING,
FILE_ATTRIBUTE_NORMAL,
0
);
if(fh1!=INVALID_HANDLE_VALUE)
{
ResponseText.Empty();
while(ReadFile(fh1,&buf,sizeof(buf),&rsize,NULL))
{
lsize=rsize;
ssize=rsize;
CString tem;
tem.Format(_T("%s"),buf);
ResponseText +=tem;
if(ssize<2000)
break;
}
}
为什么tem里面最后一段会有乱码呢?
是文件格式的问题还是什么问题呢?
[解决办法]
文件的编码问题,看下你的文件是什么编码的
UTF16的话就使用UNICODE
ANSI的话就使用多字节
UTF8的话要进行编码转换
[解决办法]
单步调试,看你的buff里读到了什么?
[解决办法]
不要把
fopen("...","...");fscanf,fprintf,fclose //读时把\r\n替换成\n,写时把\n替换成\r\n;读到\x1a就设置EOF;读写的内容当字符看待
和
fopen("...","...b");fread,fwrite,fclose //不作以上替换,遇到\x1a仍继续读;读写的内容当字节看待
弄混了