今天下定决心,把已经耽搁了很久的某件事情解决掉
本来想用C#的,也练练手,但是工程建着建着就变成MFC了…
活活,看来我对C++还是很有感情的,那好吧~
写啊写~花了四个小时,所有功能基本都实现了
唯独一个问题,死活解决不了 –
往本地硬盘写文件如果字符串中出现中文
该生成的文件由Notepad.exe\UltraEdit32.exe等文件编辑器打开
无法看到中文字符,但是英文字符则可以正确显示
初步判断是由于unicode的问题
GOOGLE了一下,很多反映这个问题的贴子
有些人说把工程设置改为使用多字节字符集(MBCS)
但是我觉得不解决Unicode下很不爽啊…于是没有采用这种方法
又转悠了一会儿,发现以下说法:
[quote]
下代码文件以CStdioFile向无法向文本中写入中文(用notepad.exe查看不到写入的中文)
CStdioFile file;
file.Open(…);
file.WriteString(_T("abc你好"));//只能写入abc
解决办法:
使用setlocale语句设定区域
#include
CStdioFile file;
file.Open(…);
char* old_locale = _strdup( setlocale(LC_CTYPE,NULL) );
setlocale( LC_CTYPE, "chs" );//设定
file.WriteString(_T("abc你好"));//正常写入
setlocale( LC_CTYPE, old_locale );
free( old_locale );//还原区域设定
简化处理可以仅使用语句setlocale( LC_CTYPE, "chs" )
<原文出处:http://www.cnblogs.com/yoyolion/archive/2007/05/23/756643.html>
[/quote]
果然很好使…希望给碰到这种问题的朋友一个解决方法
具体的原因正在研究中,然后在Codeproject上下了一个拓展CStdioFile的类,继续研究,本文存档…

最近评论