从文本文件中读入一行数据到Cstring中。
用AfxMessageBox显示的是乱码。下面循环用mid()取得的字符,数字可以正常显示,但是文字却是乱码。
将取得的Cstring写到一个新的文本文件中,文件是正确的。请问这是什么原因?CString tmp;CStdioFile fin2( _T("C:\\abc.txt"), CFile::modeRead );
fin2.ReadString(tmp);
fin2.Close();AfxMessageBox(tmp);for (int i = 0; i<tmp.GetLength(); i++)
{
CString substr;
substr = tmp.Mid(i,1);
AfxMessageBox(substr);
}
用AfxMessageBox显示的是乱码。下面循环用mid()取得的字符,数字可以正常显示,但是文字却是乱码。
将取得的Cstring写到一个新的文本文件中,文件是正确的。请问这是什么原因?CString tmp;CStdioFile fin2( _T("C:\\abc.txt"), CFile::modeRead );
fin2.ReadString(tmp);
fin2.Close();AfxMessageBox(tmp);for (int i = 0; i<tmp.GetLength(); i++)
{
CString substr;
substr = tmp.Mid(i,1);
AfxMessageBox(substr);
}
取汉字的时候你用substr = tmp.Mid(i,1);每次只取一个字节,也就是半个汉字,所以会出现乱码。建议你使用Unicode字符集!
--这很正常,数字只有一个字节,读出来正常,汉字是两个字节,一个字节一个字节的读没有意义,当然是乱码
{
CString substr;
substr = tmp.Mid(i,1);
AfxMessageBox(substr);
}
问题出在substr = tmp.Mid(i,1);,可以加个判断碰到汉字取,asc码小于零,Mid(i,2);