要想让字处理软件识别unicode必须在文件头上加入unicode编码的前导字符:0xff, 0xfe。
于是,可以用下面的代码实现汉字的输出且用字处理软件打开不会乱码
CFile DPDA;
CString FileName;
CString strLine;
FileName=_T("C:\\DPDA.txt");
DPDA.Open(FileName,CFile::modeCreate|CFile::modeWrite);
strLine="张三、李四";
DPDA.Write(strLine,wcslen(strLine)*sizeof(wchar_t)); //这句重要
CString strEnter;
strEnter="\r\n";
DPDA.Write(strEnter,4);
DPDA.Write(strLine,wcslen(strLine)*sizeof(wchar_t));
DPDA.Close();
代码实现:
修改代码:
void C文件信息View::OnCoderead()
{
// TODO: 在此添加命令处理程序代码
CFile DPDA;
CString FileName;
CString strLine;
FileName=_T("C:\\DPDA.txt");
DPDA.Open(FileName,CFile::modeCreate|CFile::modeWrite);
strLine="张三、李四";
WORD unicode = 0xFEFF; //这句重要
DPDA.Write(&unicode,2); //这句重要
DPDA.Write(strLine,wcslen(strLine)*sizeof(wchar_t)); //这句重要
CString strEnter;
strEnter="\r\n";
DPDA.Write(strEnter,4);
DPDA.Write(strLine,wcslen(strLine)*sizeof(wchar_t));
DPDA.Close();
}
在《图形文件的编码与解密1》中,如果注释掉某两句代码,也会乱码读不出来。你试试,猜猜是哪俩句?