【C言語】テキストファイル中の漢字を読み込むと文字化けする問題の解決方法

#include<stdio.h>
#include<stdlib.h>//exit()函数的头文件
int main()
{
	FILE* fp;

	fp = fopen("text.txt", "r");
	if (feof(fp))
	{
		printf("NULL");
		exit(0);//表示如果读取为空文件就正常退出
	}
	char s[20];
	fgets(s,20, fp);
	puts(s);
	fclose(fp);
}

ファイルの内容は次のとおりです。

 実行結果に文字化けが表示される

 テキストを読み込んで出力したい場合は、ファイルを開いて名前を付けて保存し、ファイルのエンコードをANSLに変更すれば文字化けすることはありません。

 以下のように文字化けは発生しません。

 補足内容:さまざまな国や地域ではさまざまな標準が策定されており、その結果、GB2312、GBK、Big5、Shift_JIS などの独自のエンコード標準が作成されています。これらは 1 ~ 4バイトを使用して、ANSI エンコーディングと呼ばれるさまざまな中国語文字拡張エンコーディング方法を表します。簡体字中国語 Windows オペレーティング システムでは、ANSI エンコードは GBK エンコードを表し、日本語 Windows オペレーティング システムでは、ANSI エンコードは Shift_JIS エンコードを表します。異なる ANSI コードには互換性がなく、情報が国際的に交換される場合、2 つの言語に属するテキストを同じ ANSI コード化テキストに格納することはできません。もちろん、ANSI エンコードの場合、 0x00 ~ 0x7F の間の文字は1 文字を表す 1 バイトのままです。これは、 ANSI エンコードとUnicodeエンコードの最大かつ最も明白な違いです。

おすすめ

転載: blog.csdn.net/m0_73633088/article/details/128337290