macのターミナル(bash,zsh)で文字化け発生
c言語の勉強中に、文字を表示するプログラムを書いてたんですが、char型は数値だからアスキーコード表示できるんじゃね? と思ったのが発端。
実行したコードは下。
#include <stdio.h> int main(void){ char str=0; int i=0,n=0; for(i=0; i<13; i++){ for(n=0; n<10; n++){ printf("%c(%d)\t", str, (int)str); str++; } puts("\n"); } printf("Please press any key\n"); getchar(); printf("END"); return 0; }
発生した文字化けは、アルファベット小文字。アルファベット大文字は文字化けしない。
vimshellで実行すると文字化けしないが、macのzsh,bashでは100%文字化けする。まだubuntuのbashで試していないからmac固有なのかはわからないけど。
こんな感じで文字化けしてます。ターミナルを再起動すれば何事もなかったように文字化けは解消されます。アスキーコードを表示しないようにすれば文字化けしないので、アスキーコード表示が原因で発生していることはわかっているんですが、vimshellで発生しないのでよくわかりませんね。
追記
ubuntu12.04のbashでは文字化けしないので、mac固有のバグなのかもしれません。vimshellでも文字化けしていませんが、bashで↑のプログラムを実行後、vimを起動すると文字化けしました。