2 blackmammmba blackmammmba 于 2016.01.15 11:22 提问

Unicode环境下,用WriteCString以CFile::typeText写汉字

Unicode环境下,用WriteCString以CFile::typeText写汉字,用UltraEdit打开,为什么啥都没写进去,除了换行。问题我已经解决,我只是想知道为什么。查了一下,有人说,使用Writestring写入时,文件打开模式为TypeText时,只会写入TCHAR双字节的一个字节,好像不对,因为一个字节也没有,所以连乱码也没有。这里面是怎么回事儿呢,求大神指导,谢谢

3个回答

91program
91program   Ds   Rxr 2016.01.15 11:31

问题已经解决,如何解决的呢?从解决的方法上,你不能分析出来问题的原因吗。
Unicode 文件的开头好像必须是 0xfffe,这样文本编辑软件都会将文件以 Unicode 来打开并处理。

91program
91program 回复blackmammmba: 中文部分?应该是无论中文、还是英文,都会有问题。只是英文会显示出第一个字符,而中文可能是由于汉字的一半不可显示的字符,所以看不到。你没有转成 HEX 模式看看,理论上应该是有一个字节的。
2 年多之前 回复
blackmammmba
blackmammmba 但是,我的问题是,以CFile::typeText方式打开,Unicode环境下,不管开头写不写0xFFFE,中文的部分,直接为空,啥都不写,不知道为啥,可有人说是只写一个字节
2 年多之前 回复
blackmammmba
blackmammmba 有两种方法,一种是以CFile::typeBinary方式打开文件,直接写入,像您说的,开头要写入0xFFFE。另一种,就是通过setlocale(LC_CTYPE,"chs"),当然写入的文本文件就是ANSI格式了
2 年多之前 回复
CSDNXIAON
CSDNXIAON   2016.01.15 12:01

MFC Unicode CFile 不能写汉字的问题
----------------------同志你好,我是CSDN问答机器人小N,奉组织之命为你提供参考答案,编程尚未成功,同志仍需努力!

oyljerry
oyljerry   Ds   Rxr 2016.01.15 13:24

WriteCString 这是什么函数,一般都是用CFile的Write,把对应的字符串写入。unicode编码就可以,OPen的时候指定unicode字符集

blackmammmba
blackmammmba 没用Write,我回头试试,用这个函数,在Unicode环境下,以CFile::typeText打开方式,写中文,写的是什么
2 年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
MFC Unicode CFile 不能写汉字的问题
近日,做一个文件的读取和写入工作,在网上找到的一些方法,但是却不能完全成功,失败的地方在于:不能写入汉字。我想这肯定和UNICODE环境有关,于是查了一下资料,形成了以下文字。 第一,读取文件(这个没有什么问题) const TCHAR szFilter[] = _T("CVS文件(*.csv)|*.csv");     CFileDialog OpenFileDialog(
CFile的Unicode宽字符写文件
CFile的Unicode宽字符写文件ANSI字符集称为窄字符,8位,C语言用unsigned char表示,不能存放世界上所有语言所有文字。UNICODE字符集称为宽字符,16位,C语言用unsigned short表示,可以存放世界上所有语言所有文字。宽字符字符串表示为一个wchar_t[]数组并由wchar_t* 指针指向它。可以通过用字母L作为字符的前缀将任何ASCII字符表示
CFile在写入Unicode编码文件出现乱码---原因及解决办法
<br /><br />      这几天统计一个词典,为藏文词典,以Unicode编码保存。要对其进行过滤处理,并且要保存处理后的结果。<br />      在一开始出现了一下问题:<br />     1,把源文件读到程序中,重新写回去,没问题<br />     2,在对原文件处理后,重新写回去,出现乱码<br />      原来,在程序处理时,把Unicode文件的头标志,过滤掉了。这样,写入的文件虽然是Unicode文件,但是,没有头标志,程序没法判断文件编码,只有按默认的ANSI编码读取。这
CFile::open函数不能以CFile::typeText方式打开文件
CFile::open函数不能以CFile::typeText方式打开文件
VS2008 用CFile对象读取Unicode文本。
Unicode是一种在计算机上使用的字符编码。Unicode 是为了解决传统的字符编码方案的局限而产生的,它为每种语言中的每个字符设定了统一并且唯一的二进制编码,以满足跨语言、跨平台进行文本转换、处理的要求。
unicode环境下用CFile读取txt的若干疑惑,该如何处理
unicode环境下用CFile读取txt的若干疑惑 在vs2010下对一些文件的操作总是有好多疑问 unicade环境下以前的许多资料发现会出现异常结果,下面看看我的问题: 主要是用CFile读取txt出现乱码,我试了好几种方法,最后终于找到了解决方法,但只是方法,还有好多疑问。 目的其实就是读取txt文件,以前用CStdioFile读取的,但是遇到超级大的文件后发现其效率极其低下,就算
VC++ unicode下读取unicode CFile::typeUnicodetxt的数据
用CStdioFile,打开文件时加入CFile::typeUnicode即可。
VC中使用CFile正确的追加写中文数据到文件不出现乱码-unicode字符集
CFile saveFile; CString file_name = getFileName(); BOOL isOpenOK = saveFile.Open(file_name, CFile::modeCreate | CFile::modeWrite | CFile::modeNoTruncate, NULL); if (false == isOpenOK) { Messa
使用Unicode字符集时用CFile把中文写入txt文件再用记事本打开出现乱码的问题
打开VS(我用的是VS2005),设定字符集为Unicode(右键项目名,属性 -> 配置属性 -> 常规 -> 字符集 -> 使用 Unicode 字符集),然后使用下面这段代码生成一个文件   CString strPath = _T("C:\\Documents and Settings\\Administrator\\桌面\\test.txt"); CFile
cfile的使用
文件处理是程序中的一个重头戏,主要用到CFile和CArchive及他们的派生类。   CFile: It directly provides unbuffered, binary disk input/output services, and it indirectly supports text files and memory files through its derived clas