如何让命令行从文本文件中输出正确汉字

用c语言读取文本文件并输出。
如何让命令行从文本文件中输出正确汉字,而不是中文乱码

看文件编码是不是UTF8,如果是,用如下代码:

#include <stdio.h>
#include <locale.h>

int main() {
    setlocale(LC_ALL, "UTF-8"); // 设置本地化环境为UTF-8

    FILE *file = fopen("text.txt", "r"); // 打开文本文件

    if (file == NULL) {
        printf("无法打开文件\n");
        return 1;
    }

    char c;
    while ((c = fgetc(file)) != EOF) { // 逐字符读取文件内容
        printf("%c", c); // 输出字符
    }

    fclose(file); // 关闭文件

    return 0;
}

基于new bing部分指引作答:
在使用C语言读取文本文件并输出时,确保正确显示汉字而不是中文乱码有以下几个步骤:

  1. 确认文本文件的编码格式:文本文件可能采用不同的编码格式,如UTF-8、GBK等。确保你知道文本文件所采用的编码格式是非常重要的。

  2. 在代码中设置正确的字符编码:通过在代码中设置正确的字符编码,可以让命令行正确地解析和显示汉字。在C语言中,你可以使用setlocale函数来设置字符编码,具体如下:

    #include <locale.h>
    
    int main() {
        setlocale(LC_CTYPE, ""); // 设置当前环境的字符编码为系统默认编码
        
        // 在此处编写读取文本文件并输出的代码
        
        return 0;
    }
    
  3. 使用适当的输入输出函数:在进行文件读取和输出时,要使用支持多字节字符的输入输出函数,以处理汉字。比如,可以使用fgetws函数来读取文件中的字符串,并使用wprintf函数来输出字符串,示例如下:

    #include <stdio.h>
    #include <wchar.h>
    #include <locale.h>
    
    int main() {
        setlocale(LC_CTYPE, ""); // 设置当前环境的字符编码为系统默认编码
        
        FILE *file = fopen("filename.txt", "r"); // 打开文件
    
        if (file) {
            wchar_t buffer[100];
            
            while (fgetws(buffer, sizeof(buffer)/sizeof(wchar_t), file)) {
                wprintf(L"%ls", buffer); // 输出字符串
            }
            
            fclose(file); // 关闭文件
        }
        
        return 0;
    }
    

通过以上步骤,在命令行中读取文本文件并输出时,应该能够正确显示汉字而不是中文乱码。注意确保文本文件的编码与代码中设置的字符编码一致,并根据实际情况进行适当调整和修改。

编码匹配即可, 文件内容utf8, 则执行程序和终端设置都是utf8