首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 嵌入开发 > WinCE >

winCE上写入文本文件乱码有关问题,求解

2012-08-21 
winCE下写入文本文件乱码问题,求解不知怎么搞的,将内容写入文件后,打开来看是一个个方框,奇怪,按照说法,应

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
[解决办法]

C/C++ code
    BYTE   head[2];        head[0]   =   0xff;       head[1]   =   0xfe;       //Unicode   格式文本,需要写入文件头两个字节 0xff   0xfe       WriteFile(hFile,   head,   2,   &dwBytesWritten,   NULL);
[解决办法]
C/C++ code
    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);    }
[解决办法]
探讨

引用:

简单的验证方法,用 notepad.exe 创建一个 Unicode 文本

用 UltraEdit 打开,用 HEX 查看时,你会看到文件头有一个 0xfeff


嗯,果然是。

那为什么
LPCTSTR buf = TEXT("weclome to wince"); 就会有乱码(不管写不写入0XFFFE都一样),而
TCHAR buf[……

热点排行