[英]CStdioFile problems with encoding on read file
我无法使用 CStdioFile 正确读取文件。
我打开 notepad.exe,输入àèìòùáéíóú
并保存两次,一次我将编码设置为ANSI
(实际上是CP-1252
),其他设置为UTF-8
。
然后我尝试使用以下代码块从 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 编码文件时,我得到了à èìòùáéÃóú
无论编码如何,我都希望我的函数适用于所有文件。
为什么我需要实施?
。编辑。
ANSI
,记事本告诉ANSI
的实际上是Windows-1252
编码。UTF-8
和CP-1252
方法。 虽然它有效,但我需要传递我事先不知道的文件编码。谢谢!
我个人使用这里宣传的课程:
https://www.codeproject.com/Articles/7958/CTextFileDocument
它非常支持读写各种编码的文本文件,包括各种风格的 unicode。
我没有遇到任何问题。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.