文档章节

[LINUX]利用Ncursesw编写支持中文的终端程序

姚思远
 姚思远
发布于 2013/12/06 11:14
字数 377
阅读 903
收藏 3

1. Ncursesw库的安装与使用

Ncurses库的安装(Ubuntu):

查看相关软件包

sudo apt-cache search ncursesw

安装ncursew必须软件包

sudo apt-get install libncurses5 libncurses5-dbg libncurses5-dev
使用Ncursesw库时,需要包含头文件 ncurses.h,没错,头文件没有改变。相应地,相关函数的使用也没有改变。

然而,在编译源文件时,采用选项-lncursesw替代原用-lncurses。

2. 使程序支持中文字符

在调用initscr()函数前,需要首先调用setlocale(LC_ALL,"")设置终端环境。具体请参见

man 3 setlocale

在man page中,我们还可以知道,为了使用setlocale这个函数,需要包含头文件locale.h。

如果没有这个头文件,可尝试安装libicu-dev软件包。


演示:

#include <ncurses.h>
#include <locale.h>

int main(void)
{
  setlocale(LC_ALL,"");
  initscr();
  attron(A_BOLD);
  printw("成功支持中文字符");
  attroff(A_BOLD);
  refresh();
  getch();
  endwin();

  return 0;
}


2014.4.14补充:

在linux系统中,一般都要使用ncursesw库来实现中文输出。但是在Mac OS X中,只有ncurses库,利用上述代码同样可以输出中文。但是注意:无论使用那种情况,必须使用setlocale(LC_ALL,""),否则都有可能带来乱码!

© 著作权归作者所有

共有 人打赏支持
姚思远
粉丝 0
博文 8
码字总数 6347
作品 0
奉节
iconv实现编码转换与中文点阵字库HZK16

嵌入式开发中中文的识别、显示一直是一个比较让人头疼的问题,这是由于嵌入式系统的精简要求所导致的。我在前一个项目中用Qt做终端的显示界面时,就被中文字符的显示搞得焦头烂额,最后还是在...

水海云
2013/02/28
0
0
linux i18n修改,中文版英文版体现

对于国内的Linux用户,经常烦恼的一个问题是:系统常常在需要显示中文的时候却显示成了乱码,而由于某些原因,需要英文界面的系统的时候,却苦于系统 不能正常输入和显示中文.另外,由于大部分主要...

xiaot99
2014/02/07
0
0
linux i18n修改,中文版英文版体现

对于国内的Linux用户,经常烦恼的一个问题是:系统常常在需要显示中文的时候却显示成了乱码,而由于某些原因,需要英文界面的系统的时候,却苦于系统 不能正常输入和显示中文.另外,由于大部分主要...

lichao19881026
2014/05/16
0
0
Ubuntu 12.04中设置安装Google拼音输入法

写在最前 好久没写文章了,随着近期时间的充裕,肯定会加快会博文更新的速度。言归正传,在安装英文Linux系统后(作为开发来说,本人更倾向于安装英文语言环境的Linux系统,这样各种提示,尤...

鄂世嘉
2013/11/27
0
2
将linux英文系统变成中文系统

linux安装中文支持 ----基于Red Hat Enterprise Linux Server release 6.4 (Santiago) 简介:按照如下修改后linux英文系统会变成中文系统 ps:其实我遇到的问题是终端显示中文乱码,一顿谷歌...

皮子喜欢打篮球
2015/07/31
0
2

没有更多内容

加载失败,请刷新页面

加载更多

docker-compose ,docker-stack

1.例子 version: "3"services: php: image: registry.cn-hangzhou.aliyuncs.com/lxepoo/apache-php5 ports: - "38080:80" networks: - my_php_mysql volum......

chenbaojun
26分钟前
1
0
SQL_Server2000示例数据库NorthWind的分析(转)

SQL_Server2000示例数据库NorthWind的分析 表名:Categories(食品类别表) 表结构: 字段名称 数据类型 长度 允许为空 CategoryID(主键) int 4 否 CategoryName nvarchar 15 否 Description ...

QQZZFT
29分钟前
1
0
laravel 5.5 Session store not set on request.

laravel 5.5 数据存入session,会出现Session store not set on request.错误。查了下laravel 5.5将session放到global middleware中,需要laravel的文件 ./app/Http/Kernel.php中的加上一句:...

MichaelShu
今天
1
0
OpenCV VideoCapture.get()参数详解

param define cv2.VideoCapture.get(0) 视频文件的当前位置(播放)以毫秒为单位 cv2.VideoCapture.get(1) 基于以0开始的被捕获或解码的帧索引 cv2.VideoCapture.get(2) 视频文件的相对位置(...

NateHuang
今天
0
0
java基础知识,小栗子

来操作一下数组.....注意带参数的变长数组的使用. package com.avatus;import java.util.Random;import java.util.Scanner;public class Main { public static void main(St...

Oh_really
今天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部