Windows10コマンドプロンプト GCCコンパイラのSJIS 対応状況メモ
20211113
WindowsPC(Windows10)のコマンドプロンプトでコンパイラGCCを使う時,SJISへの対応が望ましい。
SJISへの対応はオプションとして「-finput-charset=cp932」と「-fexec-charset=cp932」を使うことになっている。
しかし,その対応はGCCの環境によって異なっている。
【1】Win10/19043コマンドプロンプト+Cygwin64+GCC11.2.0
コンパイルの仕方 gcc -std=c99 -finput-charset=cp932 -lm a.c -o a.exe
動作OK SJISOK 問題文字「ソ」もOK
https://cygwin.com/install.html
setup-x86_64.exeでインストール
$ uname
CYGWIN_NT-10.0
$ cygcheck -c cygwin
Cygwin Package Information
Package
Version Status
cygwin
3.3.2-1 OK
1.コンソール出力
Cテストソース(SJIS) a.c
#include <stdio.h>
int main()
{
printf("Hello world! ソース焼きそば\n");
return 0;
}
コンパイル
「-finput-charset=cp932」と「-fexec-charset=cp932」が必要だと思ったら,
「-finput-charset=cp932」のみでよい。
「-fexec-charset=cp932」をつけると文字化けする。
gcc -std=c99 -finput-charset=cp932 -lm a.c -o a.exe
実行結果
Microsoft Windows [Version 10.0.14393]
(c) 2016 Microsoft Corporation. All rights reserved.
>a.exe
Hello world! ソース焼きそば
2.ファイル出力
Cテストソース(SJIS) a1.c
#include <stdio.h>
int main()
{
FILE *fp;
fp=fopen("a1.txt","w");
fprintf(fp,"Hello world! ソース焼きそば\n");
fclose(fp);
return 0;
}
コンパイル
gcc -std=c99 -finput-charset=cp932 -lm a1.c -o a1.exe
実行結果
Microsoft Windows [Version 10.0.14393]
(c) 2016 Microsoft Corporation. All rights reserved.
>a1.exe
>type a1.txt
Hello world! ソース焼きそば
【2】Win10/19043コマンドプロンプト+MinGW64+GCC8.1.0
コンパイルの仕方 gcc -std=c99 -finput-charset=cp932 -fexec-charset=cp932 -lm a.c -o a.exe
動作OK SJISOK 問題文字「ソ」もOK
http://mingw-w64.org/
MingW-W64-builds
https://sourceforge.net/projects/mingw-w64/
→ mingw-w64-install.exe
Cテストソース(SJIS) a.c
#include <stdio.h>
int main()
{
printf("Hello world! ソース焼きそば\n");
return 0;
}
コンパイル
gcc -std=c99 -finput-charset=cp932 -fexec-charset=cp932 -lm a.c -o a.exe
実行結果
Microsoft Windows [Version 10.0.14393]
(c) 2016 Microsoft Corporation. All rights reserved.
>a.exe
Hello world! ソース焼きそば