用Visual C++2005 向文本文件中写入汉字

来源:百度知道 编辑:UC知道 时间:2024/06/08 05:12:43
我用VC6.0的时候,使用一下代码就可以向文本文件中写入汉字,而用VC2005的时候,是用同样的方法却不能成功,打开文本文件得不到想要的汉字,全是乱码。请问如何解决,解决后提高分数。高手帮忙。我仍然想用Unicode编码。

CFile file;
CString str(_T("试验汉字"));
file.Open(_T("1.txt"),CFile::modeCreate | CFile::modeReadWrite);
file.Write(str,str.GetLength());
file.Close();
为什么VC2005用以下的方法就可行呢?
CFile file;
char ch[]="试验文字";
file.Open(_T("1.txt"),CFile::modeCreate | CFile::modeReadWrite);
file.Write(ch,strlen(ch));
file.Close();
我用上面的方法,在txt文本里面可以看到正确的文字,但是我觉得CString类的函数很多,用起来很方便,所以还是想用CString,再麻烦一下各位,讲的清楚点。

Unicode编码文本文件最开始要有 BOM
0xFEFF 或 0xFFFE
缺了BOM 用记事本打开看就是乱码

BOM编码见
http://www.i18nguy.com/unicode/c-unicode.html

源程序要有
#define _UNICODE

1)
CStdioFile file;

file.WriteString( ... ) ;

2)
file.Open(_T("1.txt"),CFile::modeCreate | CFile::modeReadWrite | CFile::typeText );

VC++2005有了很多改进,具体请查MSDN.另外,你用.NET方法,可能会简单一点.