关于CFile试用Write写文件时出现乱码的解决办法

网上流行的答案显然没有命中问题的要害!其实,unicode字符已经被Cfile忠实地输入了文件当中!遗憾的是字处理软件(如:记事本)不知道其中是unicode字符,将他们统统当做了单字节字符处理。
 
要想让字处理软件识别unicode必须在文件头上加入unicode编码的前导字符:0xff, 0xfe。
 
于是,可以用下面的代码实现汉字的输出且用字处理软件打开不会乱码


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();

此文属于转帖,但是由于整理的时间过长了 忘记原来的出处,在此向原作者致敬,也希望获得原作者的原谅

未注明转载出处

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章