功能是读取edit控件中显示的内容,将内容存储到txt文件中 现在文件可以创建,也可以写入,就是打开txt文件显示乱码。
请教明白人 谢谢
void CDATASTOREDlg::OnSave()
{
UpdateData(TRUE);
SYSTEMTIME Time;
GetLocalTime(&Time);
CString TimeString
,filename
,s;
CString temp,temp1,temp2,str1,str2;
TimeString.Format(_T("%d%d%d%d%d%d")
,Time.wYear
,Time.wMonth
,Time.wDay
,Time.wHour
,Time.wMinute
,Time.wSecond);
filename=_T("\\Storage Card\\")+TimeString+_T(".txt");;
HANDLE hFile = CreateFile(filename,GENERIC_WRITE|GENERIC_READ,0, NULL,CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL,NULL);
DWORD dwBytes;
GetDlgItemText(IDC_EDIT9,s);
WriteFile(hFile,(LPCVOID)(LPCTSTR)s,s.GetLength(),&dwBytes,FALSE);
}
WriteFile(hFile,s.GetString(),s.GetLength(),&dwBytes,FALSE);
Unicode字符串转成ANSI字符串再写 就不会乱码了
是 Unicode 码还是 ASCII 码, 你要仔细研究看看究竟是哪种格式。
先判断文本文件是什么格式的,如果文件的前两个字节是0xff,0xfe,则说明此文件中字符是Unicode编码的,还是其它的编码,可以在网上查到。如果没有标识,则说明 是ANSI的。
CE的控件和API只支持Unicode字符显示,显示前注意对字符串进行转换。
如果不想深究的话试试这几个头编码,总有一个不是乱码的
FF、FE(Unicode),FE、FF(Unicode big endian),EF、BB、BF(UTF-8)
写入前转成ASNI WideCharToMultiByte
读入后转回Unicode MultiByteToWideChar