5684|8

81

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

请教:读取CEdit的内容写入txt文件是乱码 [复制链接]

功能是读取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);
}

最新回复

写入前转成ASNI  WideCharToMultiByte 读入后转回Unicode MultiByteToWideChar   详情 回复 发表于 2009-12-31 10:34
点赞 关注

回复
举报

66

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
WriteFile(hFile,s.GetString(),s.GetLength(),&dwBytes,FALSE);
 
 

回复

57

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
Unicode字符串转成ANSI字符串再写 就不会乱码了
 
 
 

回复

75

帖子

0

TA的资源

一粒金砂(初级)

4
 

  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(), ...);
复制代码

 
 
 

回复

80

帖子

0

TA的资源

一粒金砂(初级)

5
 
是 Unicode 码还是 ASCII 码, 你要仔细研究看看究竟是哪种格式。
 
 
 

回复

60

帖子

0

TA的资源

一粒金砂(初级)

6
 
先判断文本文件是什么格式的,如果文件的前两个字节是0xff,0xfe,则说明此文件中字符是Unicode编码的,还是其它的编码,可以在网上查到。如果没有标识,则说明 是ANSI的。

CE的控件和API只支持Unicode字符显示,显示前注意对字符串进行转换。
 
 
 

回复

79

帖子

0

TA的资源

一粒金砂(初级)

7
 
引用 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(), ...);

 
 
 

回复

59

帖子

0

TA的资源

一粒金砂(初级)

8
 
如果不想深究的话试试这几个头编码,总有一个不是乱码的
FF、FE(Unicode),FE、FF(Unicode   big   endian),EF、BB、BF(UTF-8)
 
 
 

回复

78

帖子

0

TA的资源

一粒金砂(初级)

9
 
写入前转成ASNI  WideCharToMultiByte
读入后转回Unicode MultiByteToWideChar
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表