请教:读取CEdit的内容写入txt文件是乱码

sjhlhj   2009-12-25 14:24 楼主
功能是读取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);
}

回复评论 (8)

WriteFile(hFile,s.GetString(),s.GetLength(),&dwBytes,FALSE);
点赞  2009-12-25 15:38
Unicode字符串转成ANSI字符串再写 就不会乱码了
点赞  2009-12-25 15:41

  1. BYTE   head[2];   
  2. head[0]   =   0xff;   
  3. head[1]   =   0xfe;   
  4. //Unicode   格式文本,需要写入文件头两个字节 0xff   0xfe   
  5. WriteFile(hFile,   head,   2,   &bytesWritten,   NULL);      
  6. //再写入内容     
  7. WriteFile(hFile, s.GetString(),s.GetLength(), ...);

点赞  2009-12-25 15:59
是 Unicode 码还是 ASCII 码, 你要仔细研究看看究竟是哪种格式。
点赞  2009-12-25 17:20
先判断文本文件是什么格式的,如果文件的前两个字节是0xff,0xfe,则说明此文件中字符是Unicode编码的,还是其它的编码,可以在网上查到。如果没有标识,则说明 是ANSI的。

CE的控件和API只支持Unicode字符显示,显示前注意对字符串进行转换。
点赞  2009-12-26 08:44
引用: 引用 3 楼 flandy1982 的回复:
C/C++ code
BYTE   head[2];   
head[0]=0xff;   
head[1]=0xfe;//Unicode   格式文本,需要写入文件头两个字节 0xff   0xfeWriteFile(hFile,   head,2,&bytesWritten,   NULL);//再写入内容WriteFile(hFile, s.GetString(),s.GetLength(), ...);
点赞  2009-12-30 12:03
如果不想深究的话试试这几个头编码,总有一个不是乱码的
FF、FE(Unicode),FE、FF(Unicode   big   endian),EF、BB、BF(UTF-8)
点赞  2009-12-31 08:44
写入前转成ASNI  WideCharToMultiByte
读入后转回Unicode MultiByteToWideChar
点赞  2009-12-31 10:34
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复