用CArchive把汉字写下到文件中,用记事本打开后全是乱码

用CArchive把汉字写入到文件中,用记事本打开后全是乱码
CFile f("word.txt",CFile::modeWrite);
CString str = "什么";
CArchive ar(&f,CArchive::store);
ar << str;


怎么解决?
------最佳解决方案--------------------
看你声明的 CString,估计你用的是VC6。你先换成2008或者2010版本,然后在试试我下面的办法。我在VC2008和WIN7上是好使的。

在2008中,要这样声明CString
CString str = L"什么";

向TXT文件写入你想写的字符之前,首先写入两个额外的字节:0XFF、0XFE(我也不知道什么原因,以前人们就是这样告诉我的)
然后就可以用 CArchive 写入你的字符了。

打开TXT查看写入内容时,要以Unicode格式打开


------其他解决方案--------------------
写入txt的文本编码类型和打开txt的时候的编码类型不一致。你程序没有特别转换过的话就是UNICODE,txt打开默认是UTF-8
------其他解决方案--------------------
记事本 打开 选项里有编码选择
------其他解决方案--------------------
引用:
写入txt的文本编码类型和打开txt的时候的编码类型不一致。你程序没有特别转换过的话就是UNICODE,txt打开默认是UTF-8

我在工程选项里把字符集改成 使用多字节字符集 了
------其他解决方案--------------------
你就是写英文也有乱码。序列化后加额外信息了。