hakeの日記

Windows環境でプログラミングの勉強をしています。

MinGW gccでSJIS文字を扱う方法

コンパイルオプションとして-finput-charsetと-fexec-charset使えば良いらしい。gccのデフォルトはutf-8の様です。

ソース

#include <stdio.h>


int main(void)
{
  printf("ソース焼きそば\n");
  return 0;
}

実行結果

~/test$ gcc test.c
test.c: 関数 'main' 内:
test.c:7:10: 警告: 不明なエスケープシーケンス: '\201' [デフォルトで有効]
~/test$ ./a.exe
メ[ス焼きそば
~/test$ gcc test.c -finput-charset=CP932 -fexec-charset=CP932
~/test$ ./a.exe
ソース焼きそば

g++も同様

#include <iostream>
using namespace std;


int main(void)
{
  cout << "ソース焼きそば" << endl;
  return 0;
}
~/test$ g++ test.cpp
test.cpp: 関数 'int main()' 内:
test.cpp:7:11: 警告: 不明なエスケープシーケンス: '\201' [デフォルトで有効]
~/test$ ./a.exe
メ[ス焼きそば
~/test$ g++ test.cpp -finput-charset=CP932 -fexec-charset=CP932
~/test$ ./a.exe
ソース焼きそば