原文: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;
}