积木首页 - 学院 - 软件测试 - 技术百科 - 问答 - 黄页 - 手册 - 站长工具 - 社区
登录 | 注册
    
群组 >> 网络编程

网络编程

共有1195位成员   人气指数 -   最新排名 -

【话题】VS2005,CString含中文时的文本文件写入问题

2010-01-25 08:58:46 来自:dingqiankun 浏览数:21
转VC2005,遇到字符串操作问题,头疼不已,望各路神仙不吝赐教!!!!!!
        CString RecordInfo = _T("时间2009年11月29日");
        CString fileName = _T(".\\时间2009年11月29日\\test.txt");
CStdioFile file;
CFileException mExcept;
file.Open( fileName, CFile::modeWrite| CFile::modeCreate|CFile::modeNoTruncate, &mExcept);
file.SeekToEnd();
file.WriteString(RecordInfo);
file.Close();
在使用CStdioFile的WriteString时,完全不能写入,如果将RecordInfo换成英文字符串则一切正常。

使用CFile的Write函数则写入的全是乱码
CFile file;
file.Open(fileName, CFile::modeWrite| CFile::modeCreate|CFile::modeNoTruncate);
file.SeekToEnd();
CString str = _T("\n");
file.Write(str,str.GetLength());
file.Write(RecordInfo,RecordInfo.GetLength());
file.Close();
亦根据各路强帖使用了MultiByteToWideChar函数,乱码依然如故,而且写入的乱码更乱,更多!!!
场面惨不忍睹!!!!!!!!!!!!!!!!!!!
望各路神仙不吝赐教!!!!!!

我的配置
win7
VS2005  8.0.50727.867 
Framework 2.050727 sp2
配置类型 .dll
使用MFC 在共享DLL中使用MFC
ATL使用  否
在ATL中最小使用CRT 否
字符集  使用Unicode字符集
无公共语言运行库支持


 
小学生呀回复于25日09点12分 
自己网上搜索一下吧

加上
#include <locale.h>

_tsetlocale(LC_CTYPE, _T("chs"));

VS2005,2008涉及Unicode的IO流操作
wprintf,wfstream,fwprintf,...
都可以这样设置

也可以WideCharToMultiByte转换过来,以二进制写入
 
Holyer回复于25日09点25分 
回复1#楼:

不行啊。
加上*sizeof(TCHAR)之后,写入文件的所有英文字符之前都加了一个空格,中文字符仍然是乱码
 
kayoku回复于25日09点38分 
7楼正解,问题已经解决
非常感谢
 
mashuanghuan回复于25日09点49分 
曾经遇到一件比较郁闷的事

打开记事本,输入 “停止” 或 “停”
保存成ASCII编码,
重新打开,变乱码了...
网络编程的其他话题...

PHP: PHP技巧 - PHP基础 - PHP实例 - PHP错误代码 - 正则表达式 - 热门脚本语言: DOS命令 - vbs - CSS/HTML - python - perl - ruby - shell编程 - Powershell

JS: node.js - JS基础 - extjs - jQuery - JavaScript技巧

网址导航成语大全积木 TinyMCE 服务邮箱: Gimoohr(#)gmail.com
Copyright © 2008 Gimoo.Net  京ICP备05050695号