在读取文件上编码的cstdiofile问题
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编码文件时,我有à èìòùáéÃóú
我希望我的函数与所有文件一起使用,无论编码如何。
为什么我需要实施?
.edit。
- 不幸的是,在真实的应用程序中,文件来自外部应用程序,因此更改文件编码不是一个选项。我必须能够读取UTF-8和CP-1252文件。
- 任何文件都是有效的
ANSI
,Notepad告诉ANSI
是真正的Windows-1252
编码。 - 我已经根据此处提供的示例找到了一种读取
UTF-8
和CP-1252
的方法。尽管它有效,但我需要传递我不提前知道的文件。
thnks!
我亲自使用此处宣传的类:
https://www.codeproject.com/articles/7958/ctextfiledocument
它在读取和编写各种各种口味的各种编码的文本文件中都有很好的支持。
我没有问题。
相关文章:
- 警告处理为错误这里有什么问题
- 最小硬币更换问题(自上而下方法)
- 为"adjacent"变量赋值时出现问题
- 我的神经网络不起作用 [XOR 问题]
- 在Ubuntu 16.04上安装Cilk时出现问题
- C++我的数学有什么问题,为什么我的代码不能正确循环
- 编译包含字符串的代码时遇到问题
- Project Euler问题4的错误解决方案
- 问题:什么是QAbstractItemView::NoEditTriggers的反面
- 在编译C++代码(具有dlib和opencv)到WASM时面临问题
- 在进程中对同一管道进行读取和写入时C++管道出现问题
- 静态数据成员的问题-修复链接错误会导致编译器错误
- C++ 雷神库 - 使用资源加载器类时出现问题(不命名类型)
- 一个关于在C++中重载布尔运算符的问题
- 首要问题的答案让值班员搞错了
- setlocale的C++土耳其字符串问题
- 如何重构类层次结构以避免菱形问题
- 基于boost的程序的静态链接——zlib问题
- C++格式化输出问题
- 在读取文件上编码的cstdiofile问题