各位大老们,使用CStdioFile写日志文件,如何写入中文信息? CStdioFile file;
CString val(_T("测试数据"));
CString filename1 = _T("d:\\drxdemo\\DrawSolidDemo\\debug\\log.log");//你的log文件名
if(file.Open(filename1,CFile::modeReadWrite|CFile::modeCreate|CFile::modeNoTruncate|CFile::typeText)==0)
{
AfxMessageBox(_T("error"));
return;
} DWORD o=file.SeekToEnd();
CTime time1=CTime::GetCurrentTime();
CString m_time=time1.Format("%Y-%m-%d %H:%M:%S");
wchar_t pUEntryPoint[1024];
AsiTOUni(pUEntryPoint, pEentryPoint);
//AsiTOUni(pUComment, pComment); 下面这句,如果写入的不含中文,信息就写入成功,
可但是,一含有中文,信息就写入错误!!!
file.WriteString(m_time + _T("我的女人") + pUEntryPoint + _T(":") + _T("我\n"));
CString val(_T("测试数据"));
CString filename1 = _T("d:\\drxdemo\\DrawSolidDemo\\debug\\log.log");//你的log文件名
if(file.Open(filename1,CFile::modeReadWrite|CFile::modeCreate|CFile::modeNoTruncate|CFile::typeText)==0)
{
AfxMessageBox(_T("error"));
return;
} DWORD o=file.SeekToEnd();
CTime time1=CTime::GetCurrentTime();
CString m_time=time1.Format("%Y-%m-%d %H:%M:%S");
wchar_t pUEntryPoint[1024];
AsiTOUni(pUEntryPoint, pEentryPoint);
//AsiTOUni(pUComment, pComment); 下面这句,如果写入的不含中文,信息就写入成功,
可但是,一含有中文,信息就写入错误!!!
file.WriteString(m_time + _T("我的女人") + pUEntryPoint + _T(":") + _T("我\n"));
程序是unicode编译?
第1步 CFile::typeText改为CFile::typeBinary
第2步 在file.WriteString()前加上这句: file.Write("\377\376", 2);
等于\x0FF\x0FE写UNICODE的BOM头,这样再打开文件的时候一般软件都以UNICODE方式打开.