今天心血來潮,在linux下試了一把curses
搞了個hello world 試了下,界面還好,但輸出中文的時候就亂碼了
查了寫資料發現有兩個地方需要注意:
1 字元集的設定,源代碼中要#include <locale.h>,同時在main函數中 setlocale(LC_ALL,"");
參見:http://blog.sina.com.cn/s/blog_618786dd0100qjxu.html
2 編譯時要選擇寬字元集版本 gcc -o hello hello.c –lcursesw 而不是gcc -o hello hello.c –lcurses
參見:http://www.linuxsir.org/bbs/showthread.php?t=267078
具體是從網上找的資料如下:
首先,要在程式的開始調用setlocale函數來設定locale,如果使用系統預設的locale,就這樣setlocale(LC_ALL,"");
對于UTF-8的字元和字元串,就可以像使用普通的字元和字元串那樣使用了,不過對于strlen,要用wcslen()來代替(好像如果想要看一下一個字元串要占用多少列的空間,也要用wcswidth(),不過我不确定,我作了幾次實驗反回的都是-1,希望知道的朋友回個貼講一下,謝謝了)。
然後在編譯時也要注意,不要用gcc a.c -lncurses,而要用gcc a.c -lncursesw,ncursesw是ncurses支援寬字元(wide character)的版本。這樣整個程式就可以使用UTF-8編碼的任意字元了。
linux curses庫使用:mark之,近期搞搞~~
http://wenku.baidu.com/view/264d99d6b14e852458fb57a7.html