现在的位置: 首页 > 综合 > 正文

Ubuntu中在tty终端显示和输入汉字

2014年09月05日 ⁄ 综合 ⁄ 共 6157字 ⁄ 字号 评论关闭

Ubuntu中在tty终端显示和输入汉字

--使用fbterm&yong输入法

题记:仅以此文祭奠我死去的一天

软硬件环境:Ubuntu12.04 LTS, lenovo Z460

缘起

Ubuntu中默认可以打开7tty终端,其中第7tty终端启动了xorg的图形界面服务和窗口管理器。可以通过Ctrl+
Alt+F1-6打开tty1tty6。今天心血来潮,试了试在tty终端敲命令浏览系统,突然发现一个问题,tty终端中对中文的支持不是很好,显示中文的时候时编程这样了”?????ubuntu???.doc”.

于是,我就上网上找找看有没有什么解决方案。如果知道这个事情会花费我一天的时间的话,我绝对不会去干的。

解决方案

经过一天的尝试和探索,我找到了一个可以在ubuntu12.04以及12.10下可行的方法;

1.安装fbtermsudo apt-getinstall fbterm(也可以选择源码安装的方式)

2.修改fbterm的配置文件:.fbtermrc -修改的地方使用红色标记起

注意:由于fbterm是使用sudo提升权限安装的,所以在/root/目录下会有一个.fbtermrc文件,如果是一般的用户需要在其用户主目录(/home/usrname/)下创建一个.fbtermrc文件,.fbtermrc中的内容复制过来.

#字体名称和字体大小,都是可以修改的,字体还好,大小不太合适,就将其修改了

font-names=mono

font-size=17

# force font width (and/orheight), usually for non-fixed width fonts

# legal value format: n (fw_new =n), +n (fw_new = fw_old + n), -n (fw_new = fw_old - n)

#font-width=

#font-height=

# default color offoreground/background text

# available colors: 0 = black, 1 =red, 2 = green, 3 = brown, 4 = blue, 5 = magenta, 6 = cyan, 7 = white

color-foreground=7

color-background=0

# max scroll-back history lines ofevery window, value must be [0 - 65535], 0 means disable it

history-lines=1000

#注意:修改了这一个后,在tty下就可以看到汉字的正常显示,我想大概是因为Ubuntu下的汉字编码使用的就是utf8

text-encodings=utf8

# cursor shape: 0 = underline, 1 =block

# cursor flash interval inmilliseconds, 0 means disable flashing

cursor-shape=0

cursor-interval=500

# additional ascii charsconsidered as part of a word while auto-selecting text, except ' ',0-9, a-z, A-Z

word-chars=._-

# change the clockwise orientationangle of screen display

# available values: 0 = 0 degree,1 = 90 degrees, 2 = 180 degrees, 3 = 270 degrees

screen-rotate=0

#指定相应的输入法,这里使用的是小小(yong)输入法,由于我自己不愿意安装fictx输入法,ibus-fbterm不能#使用,各种奇怪的错误,就试用了yong输入法

input-method=yong

#ambiguous-wide=yes

3安装yong输入法—该输入法是国人创建的,了解关于小小输入法的详细信息可以参考参考资料3,

由于yong的输入法下载的是在115网盘上,还要注册才能下载,这里我用百度网盘做了一个公共链接:

http://pan.baidu.com/share/link?shareid=2647970966&uk=556148328

其中存放的yong输入法1.7.0的版本。

首先将yong输入法的软件包(形如yong-lin-*-1.7z)的解压,注意,因为小小输入法的软件包是使用的这里需要使用7z的工具

    1. 安装7z:sudo apt-get install p7zip-full

    2. 解压yong软件包:7x -xyong-lin-*-1.7z,下图显示了yong的软件包中的文件:

  1. 将解压后的yong软件安装包目录复制到某个目录下,这里我将yong(小小输入法的安装文件)放在了/opt目录下,sudocd
    /opt/yong,修改当前文件夹下的yong.ini:共修改三处-以红色字体标出,具体按个人喜好(注意:必须要先设置好yong.ini,再安装yong,否则就要在用户目录下的.yong/yong.ini中作出修改,而且每个用户都要修改,非常的不方便)

#这里按个人熟悉的输入法来设置

[IM]

#默认设置的是拼音(pinyin),因为我只会拼音输入法,

default=6

0=yong

1=wubi #五笔

2=zhengma #郑码

3=erbi

4=english

5=gbk

6=pinyin #拼音

7=wbpy


#候选字个数

cand=9

#自造词来源是鼠标选择(PRIMARY),还是剪贴版(CLIPBOARD)

select=PRIMARY

#简繁转换

s2t=0

#简繁一对多转换

s2t_m=0

#汉字过滤0:不过滤1:常用汉字

filter=0

#默认启动

enable=0

#皮肤

skin=skin

#回车键行为clear:清编码commit:上屏首选

#enter=clear

#数字键行为

#num=push

#半角出全角空格

#space=full

#预编辑模式0:禁用1:启用

onspot=0

#预编辑类型0:候选1:编码

preedit=0

#联想0:禁用1-:长度

legend=0

#自动调频

auto_move=0

#历史记录

#history=history.txt

#小键盘0:默认1:不作为编码键2:出数字

keypad=0


[main]

#用户的配置文件编辑器

edit=

#显示托盘图标

tray=1

#不显示主窗口

noshow=0

#状态栏半透明

tran=0

#主窗口位置0:右下1:顶部居中2:左下

pos=0


[key]

#ctrl+空格键打开输入法

trigger=CTRL_SPACE

#二三重码选择

select=LSHIFTRSHIFT

#中英文切换-使用shitf比较的方便

Cnen=LSHIFT

#个人设置:屏蔽切换输入法--我只需要并且只会使用中英文的拼音输入法,将其他的输入法屏蔽调

#switch=CTRL_LSHIFT

修改完yong.ini文件后,我们可以来安装yong的输入法了,

sudo./yong-tool.sh --install //安装.

sudo./yong-tool.sh --uninstall //卸载

sudo./yong-tool.sh --select //yong设置为默认的输入法

注意:yong-tool.sh是一个shell脚本,使用vi打开后发现,shell脚本的可阅读性还是比较高的.以下时安装的一段代码:

<span style="font-family:Arial;">if [ $1 = "--install" ] ; then 
	ln -sf `pwd`/yong /usr/bin/yong 
	ln -sf `pwd`/yong-config /usr/bin/yong-config 
	if [ `uname -m | grep 64 |wc -l` = 0 ] ; then 
		ln -sf `pwd`/libl.so /usr/lib/libl.so 
	else 
		if [ -d  /usr/lib32 ] ; then 
			ln -sf `pwd`/libl.so /usr/lib32/libl.so 
		else 
			ln -sf `pwd`/libl.so /usr/lib/libl.so 
		fi 
	fi </span>


注意到shell脚本中使用红色的字体标记的部分了不,实际上yong-tool.shinstall选项就是将yong的安装目录下的一些可执行文件和动态链接库文件在系统的PATH变量路径中做了个软链接(ln-sf),因此yong的安装包是不可以删除的!!!
(后来发现,安装其实就建立了两个软连接:yong和yong-config到/usr/bin目录,拷贝了yong.xml到/usr/share/ibus/component,安装包中一些文件可以删除,详细参考
 关于输入法的工作原理及编程中的yong输入法

安装完成后的命令行提示:

xxx/opt/yong> sudo ./yong-tool.sh --install

[sudo]password for xxx:

DISTdebian found

--installDone

4.到此我们可以在tty下查看和输入汉字,非常的高兴.截图纪念一下:


备注:截图软件使用的是fbgrab,安装使用:sudo apt-get install fbgrab 截图时使用的命令是fbgrab-c
1 tty1.png-c1表示的是截取tty1中显示的图像.
关于fbgrab参考了参考资料6.

在tty上使用vim的截图(vim的插件可用,装X专用):


有大神可以在tty下看视频,献图并膜拜参考资料7的大神.

 

下面是一些谈探索过程,仅仅是纪念一下,可以忽视.

探索过程

tty下中文乱码的问题似乎非常的常见,很快我就找到一个工具zhcon。“zhcon是工作在Linux控制台下的高效双字节中//(CJK)虚拟终端,就像DOS环境中的UCDOS一样,为控制台(console)环境提供完整的双字节语言环境。”[参考资料1]

由参考1可知,zhcon是一个GPL的自由软件,其安装方法同大多数的自由软件一样,有三种方法:

1.源代码安装(下载地址zhcon.sourceforge.net/index_cn.html):./configure
→ make → sudo make install

2.rpm安装包:Redhat推出的一种源码包格式,使用rpm软件安装包rpm-hf
xxx.rpm

3. deb安装包:UbuntuDebian的安装包格式,使用dpkg软件包管理工具,

ubuntu下的软件安装异常简单,一条命令的问题:

sudo apt-get installzhcon (本人就是使用的这个方法来安装的)

安装这个软件之后,配置文件时,详细参考资料2

基本上没什么,安装完成后在tty1中端中使用命令zhcon--utf-8 --drv=vga,据别人介绍,中文就可一显示了.看起来很简单的事情,然而,我的笔记本上依然时乱码的。把别人写的又操作一了遍,/etc/profile配置文件,添加条目:

exportLANG=zh_CN.GB2312
exportLC_All=zh_CN.GB2312

调整分辨率之类的在我的机器上是不需要的,不知道为何,好像zhcon可以自动的识别修改配置文件后,重启依然失败了,我考虑是不是由于系统设置的问题,参考参参考资料4中的一些方法,发现了可以通过修改/var/lib/locales/supported.d/local文件来修改系统中的关于语言的设置,通过命令:sudodpkg-reconfigure
locales
来重新配置系统语言设置但是对在tty下的中文显示没有什么用处

后来在ubuntu论坛上看到除了使用zhcon,还可以使用fbterm,而且fbterm更加的强大,可以和一些输入法搭配在tty中输入汉字,典型的有这样集中方法(参考资料5)

fbterm+ucimf (简略粗糙):没有试过

fbterm+ibus-fbterm(通用):尝试后没有成功

fbterm+fcitx-fbterm (最优方案):没有试过,不知到详情.

fbterm+yong :尝试过并且成功了,就是本文介绍方法.

按照参考资料5上说的步骤做了一遍,花了1-2个小时。使用fbterm,tty中文显示的问题很快就解决了,很高兴,因为搞了半天,终于看到成果了。接下来解决中文输入的问题,参考资料5实在时太详细了,从输入法到字体的解决方法。字体上我还是比较喜欢mono字体的,输入法的问题按照资料5的步骤来处理没有解决.很是伤心,决定再试试yong输入法就不玩了。结果yong输入法成功了,我很高心,因为我的死去的一天终于看到成果了。

后记

0.输入法,中文乱码真是个难搞的问题,保存为UTF-8是好习惯

1.修改系统设置时,最好要做个备份,这样比较安全

2.Ubuntu中文论坛上的牛人不少,参考资料[3]的中不少关于输入法的介绍

3.遇到问题后,要自己多思考思考,不盲从不偏信

4.有的时候,多坚持一下,也许就会柳暗花明,豁然开朗。

再次看当时写的博客,感觉好情绪化。此外,关于tty和中文输入的实现方面,我对fbterm的实现很好奇,而且自己使用fbterm一定要root权限,这也算是一个缺陷,有机会处理一下。

在tty下使用vim别有一番风味,很好很强大。

若干月后,再次来看这个解决方案,有些新认识,Fbterm是使用framebufferVESA显卡的终端模拟器,配合Ibusfcitx可以输入输出中文。Mplayer是一款基于framebuffer的命令行播放器,因此,可以在tty下播放器视频。

在安装了Nividia的官方显卡驱动后,tty中会出现分辨率过低的情况,可以通过设置/boot/default/grub中关于framebuffer输出和分辨率启动选项(参考资料8)。

参考资料

[1]http://download.chinaunix.net/download/0013000/12223.shtml

[2]zhcon中文乱码http://zhangxun0712.blog.163.com/blog/static/800730120125101246730/

[3]小小输入法资源汇总http://forum.ubuntu.org.cn/viewtopic.php?t=226677

[4]ubuntu终端中文显示乱码问题!

http://hi.baidu.com/bisvefevlalqrvs/item/fff7955df23759ced2e10c71

[5]Ubuntu12.04安装ibus-fbterm-0.9.1http://blog.sina.com.cn/s/blog_8ea8e9d50101emj9.html

[6]tty终端截屏软件FbGrab安装和使用http://wangxiaoyu.blog.51cto.com/922065/651202

[7]ubuntu控制台中文及小小输入法http://browse.feedreader.com/c/bsk121_stories/485836525

[8]Ubuntu 12.04 使用虚拟控制台fberm,显示并可输入中文

抱歉!评论已关闭.