mfc文件输出乱码

mrgeduo 2013-04-02 03:01:08
在vs2008环境下,
void CFileView::OnFileWrite()
{
// TODO: 在此添加命令处理程序代码
FILE *pFile=fopen("1.txt","w");
fwrite("http://www.sunxin.org",1,strlen("http://www.sunxin.org"),pFile);
fclose(pFile);
}

void CFileView::OnFileRead()
{
// TODO: 在此添加命令处理程序代码
FILE *pFile=fopen("1.txt","r");
char *pBuf;
fseek(pFile,0,SEEK_END);
int len=ftell(pFile);
pBuf=new char[len+1];
fread(pBuf,1,len,pFile);
pBuf[len]=0;
fclose(pFile);
MessageBox(pBuf);
}
messagebox输出的怎么是汉字乱码呢?如何修改?
...全文
280 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
mrgeduo 2013-04-02
  • 打赏
  • 举报
回复
引用 7 楼 xiaohuh421 的回复:
fseek(pFile,0,SEEK_END); 你这里把文件指针移动到了最后, 后面却没看见移回来, 第一个悲剧. pBuf=new TCHAR[len+1]; 光是申请空间, 但未初始化, 第二悲剧. 所以就乱码了.
感谢七楼,感谢各位大侠的帮助,乱码主要是因为指针移过去没有移回来!
lgxing 2013-04-02
  • 打赏
  • 举报
回复
7楼正解, 读文件时是按字节读的,注意转换 字符串长度要用_tcslen
schlafenhamster 2013-04-02
  • 打赏
  • 举报
回复
fseek(pFile,0,SEEK_SET); fread(pBuf,1,len,pFile); pBuf[len]=0;
mrgeduo 2013-04-02
  • 打赏
  • 举报
回复
引用 6 楼 sha_jinhao 的回复:
同样遇到过 http://bbs.csdn.net/topics/320228998 这个看了么? 太多
我用的是c的库函数,而且我把unicode改为多字节字符集,读取的仍然是乱码
xiaohuh421 2013-04-02
  • 打赏
  • 举报
回复
fseek(pFile,0,SEEK_END); 你这里把文件指针移动到了最后, 后面却没看见移回来, 第一个悲剧. pBuf=new TCHAR[len+1]; 光是申请空间, 但未初始化, 第二悲剧. 所以就乱码了.
jimette 2013-04-02
  • 打赏
  • 举报
回复
同样遇到过 http://bbs.csdn.net/topics/320228998 这个看了么? 太多
mrgeduo 2013-04-02
  • 打赏
  • 举报
回复
引用 2 楼 schlafenhamster 的回复:
你的"1.txt" 根本不是 UNICODE 的, 你用 ‘记事本’ 打开 看看, 然后 另存为 UNCODE 的 再运行程序
输出到文件都是对的,但从文件读就是乱码,不过两次的乱码不同
mrgeduo 2013-04-02
  • 打赏
  • 举报
回复
引用 2 楼 schlafenhamster 的回复:
你的"1.txt" 根本不是 UNICODE 的, 你用 ‘记事本’ 打开 看看, 然后 另存为 UNCODE 的 再运行程序
改了1.txt格式,还是不行,代码都改成unicode的还是不行: void CFileView::OnFileWrite() { // TODO: 在此添加命令处理程序代码 FILE *pFile=fopen("1.txt","w"); fwrite(_T("http://www.sunxin.org"),2,strlen("http://www.sunxin.org"),pFile); fclose(pFile); } void CFileView::OnFileRead() { FILE *pFile=fopen("1.txt","r"); TCHAR *pBuf; fseek(pFile,0,SEEK_END); int len=ftell(pFile); pBuf=new TCHAR[len+1]; fread(pBuf,1,len,pFile); pBuf[len]=0; fclose(pFile); MessageBox(pBuf); }
mrgeduo 2013-04-02
  • 打赏
  • 举报
回复
引用 1 楼 zgl7903 的回复:
估计你代码是UNICODE的, 使用::MessageBoxA
我用了unicode,再用通用的messagebox没问题吧?
schlafenhamster 2013-04-02
  • 打赏
  • 举报
回复
你的"1.txt" 根本不是 UNICODE 的, 你用 ‘记事本’ 打开 看看, 然后 另存为 UNCODE 的 再运行程序
zgl7903 2013-04-02
  • 打赏
  • 举报
回复
估计你代码是UNICODE的, 使用::MessageBoxA

16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧