我无法使用CStdioFile正确读取文件。
我打开notepad.exe,输入àèìòùáéíóú
并保存两次,一旦我将编码设置为ANSI
(真的是CP-1252
),其他设置为UTF-8
。< / p>
然后我尝试使用以下代码块从MFC中读取它
BOOL ReadAllFileContent(const CString &FilePath, CString *fileContent)
{
CString sLine;
BOOL isSuccess = false;
CStdioFile input;
isSuccess = input.Open(FilePath, CFile::modeRead);
if (isSuccess) {
while (input.ReadString(sLine)) {
fileContent->Append(sLine);
}
input.Close();
}
return isSuccess;
}
当我调用它时,使用ANSI文件我得到了预期的结果àèìòùáéíóú
但是当我尝试读取UTF8编码的文件时,我得到了à èìòùáéÃóú
我希望我的函数适用于所有文件,无论编码如何。
为什么我需要实施?
.EDIT。
ANSI
,记事本告诉ANSI
的是Windows-1252
编码。UTF-8
和CP-1252
的方法。虽然它有效,但我需要通过我事先不知道的文件编码。Thnks!
答案 0 :(得分:2)
我个人使用这里所宣传的课程:
https://www.codeproject.com/Articles/7958/CTextFileDocument
它非常支持读取和编写各种编码的文本文件,包括各种风格的unicode。
我没有遇到任何问题。