对话框程序,在对话框模板上放置了一个CListBox列表框,通过APPWINZARD添加了一个变量m_ListBox,在BOOL CMyDictDlg::OnInitDialog()函数中添加下面代码:CStdioFIle myData;
myData.Open(_T"test.txt",CStdioFile::modeRead);
CString temp;
while(myData.ReadString(temp))
{
m_ListBox.AddString((LPCTSTR)temp);
}编译通过运行,然后问题来了,如果test.txt文件是GBK编码的话,程序能正确识别并且显示,但如果test.txt是UNICODE编码的话,显示出来的却是乱码或者空白,工程属性了我已经设置了UNICODE属性的,步骤是在网上看的,原来缺少MFC42UD库,也已经下了,在工程属性中,预编译处理项,添加了_UNICODE,删除了原来的_MBCS,在“连接”页的“output”分类的程序接入点中,也添加了wWinMainCRTStartup,编译通过!可是还是识别不了读进的UNICODE文本(Unicode文本已经将标志0xFFFE修改掉),GBK文本的则没有问题!
我用的VC6.0中文版!
myData.Open(_T"test.txt",CStdioFile::modeRead);
CString temp;
while(myData.ReadString(temp))
{
m_ListBox.AddString((LPCTSTR)temp);
}编译通过运行,然后问题来了,如果test.txt文件是GBK编码的话,程序能正确识别并且显示,但如果test.txt是UNICODE编码的话,显示出来的却是乱码或者空白,工程属性了我已经设置了UNICODE属性的,步骤是在网上看的,原来缺少MFC42UD库,也已经下了,在工程属性中,预编译处理项,添加了_UNICODE,删除了原来的_MBCS,在“连接”页的“output”分类的程序接入点中,也添加了wWinMainCRTStartup,编译通过!可是还是识别不了读进的UNICODE文本(Unicode文本已经将标志0xFFFE修改掉),GBK文本的则没有问题!
我用的VC6.0中文版!
try
{
CFile file;
file.Open(_T("F:\\12.txt"), CFile::modeRead);
DWORD size = file.GetLength();
wchar_t* buf = new wchar_t[size+1];
memset(buf, 0, sizeof(wchar_t)*(size+1));
file.Seek(2, CFile::begin);
file.Read(buf, size);
file.Close();
wchar_t seps[] = L"\r\n";
wchar_t* tmp = buf;
wchar_t* token = wcstok(tmp, seps);
while(NULL != token)
{
m_listbox.AddString(CString(token)); token = wcstok(NULL, seps);
}
//AfxMessageBox(CString(buf));
delete[] buf;
buf = NULL;
}
catch (CException* e)
{
e->ReportError();
e->Delete();
}
程序中的UNICODE 是2字节的...