今天心血来潮,在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