文字コード
そういえばgccではどの文字コード体系まで扱えるのか試したことがなかったし、これに引っかかったことがあるので試してみた。
以下のただ文字列を表示するだけのごく簡単なプログラム(ds.c)を使った。
#include <stdio.h> int main(void){ int n = 42; printf("人生、宇宙、すべての答え: %d", n); }
vimで日本語を含むファイルを作成するとデフォルトでEUCになるので、nkfコマンドで
$ nkf -e ds.c > ds.euc.c $ nkf -s ds.c > ds.sjis.c $ nkf -w ds.c > ds.utf8.c $ nkf -j ds.c > ds.jis.c
EUC(特に意味はないけど)、ShiftJIS、UTF-8、JIS(7bit)コードのファイルに変換。
で、それぞれコンパイルしてみると、EUCやUnicodeは当然として、ShiftJISも正常にコンパイルできた。ただ、JISだけはエラーになってコンパイルできなかった。
できたプログラムを実行すると、EUC以外は文字化け。ただ、これはシェルの設定がEUCになっているためなので
$ ./ds.sjis | nkf -e
で出力をEUCに戻すと正常に表示された。