プログラミング ncurses 日本語対応
まず、
include <ncurses.h> #include <locale.h> main(){ setlocale(LC_ALL,""); initscr(); addstr("hogehoge"); refresh(); sleep(1); endwin(); }
というコードをかく。
gcc hoge.c -lncurses -I/usr/local/include/ncurses/
としてやると、もちろんなんの問題もなくコンパイルできる。
動作も問題ない。
次に、LANG=ja_JP.SJIS
に設定して、
include <ncurses.h> #include <locale.h> main(){ setlocale(LC_ALL,""); initscr(); addstr("ほげほげ"); refresh(); sleep(1); endwin(); }
とやり、gcc hoge.c -lncurses -I/usr/local/include/ncurses/
すると、文字化けする。
次にLANG=ja_JP.eucJP
とやり、コードの"ほげほげ"を書き直して、
gcc hoge.c -lncurses -I/usr/local/include/ncurses/とやると、
文字化けせず無事に実行できる。
次に、ja_JP.utf8
とやり、コードの"ほげほげ"を書き直して、
gcc hoge.c -lncurses -I/usr/local/include/ncurses/とやると、
文字化けする。
次に
ncursesをダウンロードしてきて
./configure --prefix=$HOME --enable-widec
というオプションをつけてコンパイルし
ホームディレクトリ以下にインストールする。
<ncursesw/ncurses.h> #include <locale.h> main(){ setlocale(LC_ALL,""); initscr(); addstr("ほげほげ"); refresh(); sleep(1); endwin(); }
とやり、LANG=ja_JP.SJIS
にして、"ほげほげ"を書き直して、
にしてgcc hoge.c -L/home/hugahuga/lib/ -lncursesw -I/home/hugahuga/include/
すると、文字化け無く実行できる。
次にLANG=ja_JP.eucJP
とやり、コードの"ほげほげ"を書き直して、
gcc hoge.c -L/home/hugahuga/lib/ -lncursesw -I/home/hugahuga/include/とやると、
文字化け無く実行できる。
次に、LANG=ja_JP.utf8
とやり、コードの"ほげほげ"を書き直して、
gcc hoge.c -L/home/hugahuga/lib/ -lncursesw -I/home/hugahuga/include/とやると、
文字化け無く実行できる。
こんな感じ。