[C++]MFC使用CFile读写Unicode字符集文件(文件头缺失导致乱码) 博客分类: C/C++ unicode
程序员文章站
2024-03-11 14:47:31
...
原文:http://blog.csdn.net/augusdi/article/details/8961008
写入Unicode文本时,要在文件头部加入Unicode文本标志0XFEFF。
#include <stdio.h> #ifndef _UNICODE #define _UNICODE //使用UNICODE编码 #endif #include <Afx.h> //为了使用CString类 const int UNICODE_TXT_FLG = 0xFEFF; //UNICODE文本标示 int main() { FILE* WriteF; CString Wstr = _T("一个测试写入文本"); WriteF = fopen("d:\\test.txt","w+"); if(WriteF) { fwrite(&UNICODE_TXT_FLG,2,1,WriteF); //写入头部 fwrite(Wstr.GetBuffer(Wstr.GetLength()),Wstr.GetLength() * 2,1,WriteF); fclose(WriteF); } return 0; }
MFC代码如下:
#include <stdio.h> #ifndef _UNICODE #define _UNICODE #endif #include <Afx.h> const int UNICODE_TXT_FLG = 0xFEFF; // int main() // { // FILE* WriteF; // // // CString Wstr = _T("一个测试写入文本"); // WriteF = fopen("d:\\test.txt","w+"); // // if(WriteF) // { // fwrite(&UNICODE_TXT_FLG,2,1,WriteF); // fwrite(Wstr.GetBuffer(10),Wstr.GetLength() * 2,1,WriteF); // fclose(WriteF); // } // // return 0; // } int main() { CFile WriteF; CString Wstr = _T("一个测试写入文本"); WriteF.Open(_T("d:\\test.txt"),CFile::modeCreate | CFile::modeWrite); if(WriteF) { WriteF.Write(&UNICODE_TXT_FLG,2); WriteF.Write(Wstr.GetBuffer(Wstr.GetLength()),Wstr.GetLength()*2); WriteF.Flush(); WriteF.Close(); } return 0; }
上一篇: ASP.NET MVC引入JQUERY JQRTE控件
下一篇: PHP实现的文件上传类与用法详解