楼主的MFC是UNICODE编码,将listcontrol内容导入*.csv时出现中文乱码(英文数字正常):
CFileDialog fdlg(false,_T("*.csv"),NULL,OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT,_T("Excel CSV File(*.csv)|*.csv|文本文件 Text(*.txt)|*.txt|All File(*.*)|*.*||"),NULL);
if (fdlg.DoModal()==IDOK)
{
CString filename=fdlg.GetPathName();
CFile file;
if (!file.Open(filename,CFile::modeCreate | CFile::modeWrite))
{
MessageBox(_T("文件此时不能打开"),_T("提示"));
return;
}
CString strHead = _T("编号,事件,时间,管压,机车号,备注,电池电压,设备号,电池编号,流量计采样电压\r\n");
file.Write(strHead,wcslen(strHead)*sizeof(wchar_t));
for (int nItem=0;nItem<m_list.GetItemCount();nItem++)
{
CString strData;
for (int i=0;i<10;i++)
{
strData += m_list.GetItemText(nItem,i);
if (9 == i)
{
strData += _T("\r\n");
}
else
{
strData += _T(",");
}
}
file.Write(strData,wcslen(strData)*sizeof(wchar_t));
}
file.Close();
}
百度到答案:写入csv时该软件并不以unicode进行编码,因此中文乱码,于是加入了
//设置文件存储格式,否则中文为乱码
DWORD unicode=0xFEFF;
file.SeekToBegin();
file.Write(&unicode,2);
是木有乱码了没错,可是每一项不能按“,”分格存储
楼主求助!!!既要保证无乱码又要保证文件识别“,”进行分格应该怎么破!!!
------解决思路----------------------
#include <locale.h>
setlocale(LC_ALL, "chs");
CStdioFile file(L"1.csv", CStdioFile::modeCreate
------解决思路----------------------
CStdioFile::modeWrite);
CString line = L"小明,数学,100,英语,95,语文,90";
file.WriteString(line + L'\n');
line = L"小红,数学,95,英语,100,语文,90";
file.WriteString(line + L'\n');
line = L"小张,数学,97,英语,98,语文,90";
file.WriteString(line + L'\n');
file.Close();