菜鸟提问:字符串写入txt文件出现乱码
同一个字符串 在edit控件里写入就正常显示 写入txt文件的时候程序正常完成 但是一打开txt文件看见的都是乱码 请问诸位大虾有碰到过这类情况吗?这是为什么呢?
这是代码:
...................................
WriteToTxt( lpTotalPro );
SetDlgItemText(g_hMainWnd, IDC_SMSF_EDIT_BOX, lpTotalPro);
................................
这是WriteToTxt函数的定义
DWORD WriteToTxt( TCHAR* lpStrings )
{
DWORD dw; //写入的数据长度
HANDLE hTxtFile = CreateFile( _T( "\\Program Files\\test.txt "), GENERIC_WRITE, 0, NULL, OPEN_ALWAYS, 0, 0 );
if( hTxtFile == INVALID_HANDLE_VALUE )
MessageBox(NULL, _T( "创建/打开文件失败! "),
_T( "错误 "),MB_OKCANCEL | MB_ICONASTERISK);
else
{
WriteFile( hTxtFile, lpStrings , lstrlen(lpStrings), &dw, NULL);
}
CloseHandle(hTxtFile);
return dw;
}
跪谢!
[解决办法]
因为你写入的是Unicode码的字符,而不是Ascii码的字符
如果要想正确显示Unicode码的字符,在文件起始写入0xFF,0xFE即可
[解决办法]
pknife(小李飞刀) 正解。
读UNICODE文件,需要跳过文件头的两个字节。
同样,写的时候,如果是从头写,得写上标记位,否则,用记事本打开,也会是乱码。