winCE下写入文本文件乱码问题,求解
不知怎么搞的,将内容写入文件后,打开来看是一个个方框,奇怪,按照说法,应该写入一个2字节的文件头就可以了呀,下面是我的写文件函数:
LONG OnWriteFile(HWND hDlg,UINT message,WPARAM wParam,LPARAM lParam){
HANDLE hFile = CreateFile(TEXT("\\Temp\\test.txt"),
GENERIC_WRITE,
FILE_SHARE_READ,NULL,OPEN_ALWAYS,
FILE_ATTRIBUTE_NORMAL,0);
if (hFile == INVALID_HANDLE_VALUE)
{
return FALSE;
}
DWORD dwWrite = -1;
WORD wUnicodeFlag = 0xFEFF;
WriteFile(hFile,&wUnicodeFlag,sizeof(WORD),&dwWrite,NULL);
SetFilePointer(hFile,0,NULL,FILE_END);
LPCTSTR buf = TEXT("weclome to wince");
WriteFile(hFile,&buf,wcslen(buf)*2,&dwWrite,NULL);
CloseHandle(hFile);
return 0;
}
[解决办法]
不明白LZ为什么要用wchar写。
char buf[32] = "weclome to wince";
WriteFile(hFile,buf,sizeof(buf),&dwWrite,NULL);
这样没问题啊。
[解决办法]
简单的验证方法,用 notepad.exe 创建一个 Unicode 文本
用 UltraEdit 打开,用 HEX 查看时,你会看到文件头有一个 0xfeff
[解决办法]
BYTE head[2]; head[0] = 0xff; head[1] = 0xfe; //Unicode 格式文本,需要写入文件头两个字节 0xff 0xfe WriteFile(hFile, head, 2, &dwBytesWritten, NULL);
[解决办法]
CString str1=L"1234567890abcdefghijABCDEFJHIj一二三四五六七八九十\,123\,11\r\n"; BYTE head[2]; head[0] = 0xff; head[1] = 0xfe; //Unicode 格式文本,需要写入文件头两个字节 0xff 0xfe WriteFile(hFile, head, 2, &dwBytesWritten, NULL); for (int i=0;i<1000;i++) { zt=WriteFile(hFile,str1,(str1.GetLength())*2,&dwBytesWritten2,NULL); }
[解决办法]