VS Studio2022从文件中读取中文出现乱码

求解答!输出中文是没有问题的,从文件中读取,然后再输出,就会乱码

img

img


img


img


img

在openfile的时候,指定一下utf-8格式

该回答通过自己思路及引用到GPTᴼᴾᴱᴺᴬᴵ搜索,得到内容具体如下:
在读取文件时,如果文件的编码格式与你的程序使用的编码格式不一致,就会出现中文乱码问题。您可以尝试以下方法解决这个问题:

1、 使用 UTF-8 编码格式保存文件

在您的代码中,您使用了 fopen 函数打开文件,但是没有指定文件的打开模式。如果您使用默认的模式打开文件,文件将以文本模式打开,并且文件编码格式将根据操作系统和本地区域设置而定。为了避免编码格式不一致的问题,您可以使用 UTF-8 编码格式保存文件,并在打开文件时使用 "r, ccs=UTF-8" 模式打开文件,如下所示:

FILE *fp;
char buffer[1024];

fp = fopen("test.txt", "r, ccs=UTF-8"); // 使用 UTF-8 编码格式打开文件

while (fgets(buffer, 1024, fp) != NULL) {
  printf("%s", buffer);
}

fclose(fp);

在上面的代码中,我们使用 "r, ccs=UTF-8" 模式打开文件,这样就可以以 UTF-8 编码格式读取文件,从而避免中文乱码问题。

2、 使用 Wide 字符串函数读取文件

如果您使用的是 Windows 操作系统,您可以使用 Wide 字符串函数读取文件,这样就可以避免中文乱码问题。例如,您可以使用 wifstream 类和 getline 函数读取文件,如下所示:

#include <iostream>
#include <fstream>
#include <string>

using namespace std;

int main() {
  wifstream ifs("test.txt");
  wstring line;
  while (getline(ifs, line)) {
    wcout << line << endl;
  }
  return 0;
}

在上面的代码中,我们使用了 wifstream 类和 getline 函数读取文件,这样就可以以 Wide 字符串形式读取文件,从而避免中文乱码问题。注意,在使用 Wide 字符串函数时,您需要确保文件的编码格式与程序使用的编码格式一致,否则仍然可能出现中文乱码问题。

希望这些方法可以帮助您解决中文乱码问题。


如果以上回答对您有所帮助,点击一下采纳该答案~谢谢