Ubuntu中在tty终端显示和输入汉字
--使用fbterm&yong输入法
题记:仅以此文祭奠我死去的一天
软硬件环境:Ubuntu12.04 LTS, lenovo Z460
Ubuntu中默认可以打开7个tty终端,其中第7个tty终端启动了xorg的图形界面服务和窗口管理器。可以通过Ctrl+ Alt+F1-6打开tty1到tty6。今天心血来潮,试了试在tty终端敲命令浏览系统,突然发现一个问题,tty终端中对中文的支持不是很好,显示中文的时候时编程这样了”?????ubuntu???.doc”.
于是,我就上网上找找看有没有什么解决方案。如果知道这个事情会花费我一天的时间的话,我绝对不会去干的。
经过一天的尝试和探索,我找到了一个可以在ubuntu12.04以及12.10下可行的方法;
1.安装fbterm:sudo 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的工具
将解压后的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脚本的可阅读性还是比较高的.以下时安装的一段代码:
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
注意到shell脚本中使用红色的字体标记的部分了不,实际上yong-tool.sh的install选项就是将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安装包:Ubuntu和Debian的安装包格式,使用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是使用framebuffer的VESA显卡的终端模拟器,配合Ibus或fcitx可以输入输出中文。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,显示并可输入中文