今天在实现提取某ANSI文件内字符信息时发现中文都是乱码,折腾好久,试了数种方法,就以下两种比较简单有效些:(vs2019解决方案属性设置的是Unicode而非多字节)
CStdioFile FileRead(LPCTSTR(_T("***")),CFile::modeRead);
CString strRead=_T("");
while(FileRead.ReadString(strRead))
{
vecFileLines.push_back(strRead);
}
1. 用一个csdn上的函数,链接:
https://blog.csdn.net/Cashey1991/article/details/8266986
while(FileRead.ReadString(strRead))
{
ReadStringCharToUnicode(strRead);
vecFileLines.push_back(strRead);
}
2. std::locale::gloabl(std::locale(""))
在while循环读取字符串前用这个进行系统区域设置即可。
注意初始化CStdioFile对象时的文件打开方式,今天因为在各种尝试过程中忘记删除CFile::typeBinary,使得上述方法仍无法有效读取。