使用ncurses出现中文乱码,在网上搜索了一大堆方法还是没有解决。
有几个关键点:
1.gcc编译时用,gcc -lncursesw --verbose查看是否支持-lncursesw连接;
2.代码文件里面,设置locale
#include <ncursesw/curses.h>
#include <locale.h>
int main(int argc, char const *argv[])
{
setlocale(LC_ALL, "");
initscr();
noecho();
refresh();
printw("我来测试中文的\n");
getchar();
return 0;
}
3.命令行执行apt-cache search libncursesw5,查看是否安装ncurses库
发现我的linux不支持;在/usr/include/下发现有ncurses.h
但是,没有别人说的ncursesw目录;
后来发现,我装了libncurses5,也装了libncursesw5,导致-lncursesw选项不能用,我就把libncurses5卸载了,然后再重新装libncursesw5;
具体命令是
1. apt-cache search libncurses5
2. apt-get purge libncurses5
3. sudo apt-get purge libncurses5-dbg
4. sudo apt-get purge libncurses5-dev
5. sudo apt-get autoremove
6. sudo apt-get clean
7. dpkg -l |grep ^rc|awk '{print $2}' |xargs dpkg -P
接着再安装libncursesw5,命令如下
1. sudo apt-get install libncursesw5
2. sudo apt-get install libncursesw5-dbg
3. sudo apt-get install libncursesw5-dev
然后
gcc -c test.o test.c
gcc -o test test.o -lncursesw
接着运行 ./test
发现中文可以正常打印了
捐赠:
BTC: `1NTom3PgUct3WNmnBYNq5KGDQvY3MXs8dJ`
ETH:`0x8509f0F37497e094924F5c2e776e0dA522c57e43`