文档章节

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

姚思远
 姚思远
发布于 2013/12/06 11:14
字数 377
阅读 939
收藏 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
奉节
私信 提问
linux i18n修改,中文版英文版体现

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

lichao19881026
2014/05/16
0
0
iconv实现编码转换与中文点阵字库HZK16

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

水海云
2013/02/28
0
0
日志分析工具 GoAccess v1.3 发布,已支持简体中文

GoAccess旨在成为一个基于终端的快速日志分析器。其核心思想是实时快速分析和查看Web服务器统计信息,而无需使用您的浏览器(如果您希望通过SSH快速分析访问日志,或者只是喜欢在终端中工作)...

明月登楼
2018/12/17
0
0
将linux英文系统变成中文系统

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

皮子喜欢打篮球
2015/07/31
0
2
Ubuntu 12.04中设置安装Google拼音输入法

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

鄂世嘉
2013/11/27
0
2

没有更多内容

加载失败,请刷新页面

加载更多

Windows 上安装 Scala

在安装 Scala 之前需要先安装 Java 环境,具体安装的详细方法就不在这里描述了。 您可以自行搜索我们网站中的内容获得其他网站的帮助来获得如何安装 Java 环境的方法。 接下来,我们可以从 ...

honeymose
今天
1
0
数据库篇多表操作

第1章 多表操作 实际开发中,一个项目通常需要很多张表才能完成。例如:一个商城项目就需要分类表(category)、商品表(products)、订单表(orders)等多张表。且这些表的数据之间存在一定的关系...

stars永恒
今天
3
0
nginx日志自动切割

1.日志配置(Nginx 日志) access.log----记录哪些用户,哪些页面以及用户浏览器,IP等访问信息;error.log------记录服务器错误的日志 #配置日志存储路径:location / {      a...

em_aaron
昨天
5
0
java 反射

基本概念 RTTI,即Run-Time Type Identification,运行时类型识别。RTTI能在运行时就能够自动识别每个编译时已知的类型。   要想理解反射的原理,首先要了解什么是类型信息。Java让我们在运...

细节探索者
昨天
2
0
推荐转载连接

https://www.cnblogs.com/ysocean/p/7409779.html#_label0

小橙子的曼曼
昨天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部