问题在于:我们还没有把LANG
变量改成英语之前,系统得到的LANG变量是
中文的,因此,它知道需要在图形界面启动过程中启用中文输入法,但把LANG变量改成
英文后,系统根据LANG变量知道系统是英文的,它便不再启动中文输入法,也不再设置和导出相关的变量,导致中文输入法不可用。因此,只要在这个脚本中,“骗”过系统,让输入法脚本“以为”系统是中文的,它不就运行中文输入法,并导出相关变量了吗? 于是,通过分析脚本,我在xinput.sh中的: lang_region=$(echo $tmplang | sed -e 's/\..*//') 后面又添加了lang_region="zh_CN" 直接把lang_region=$(echo $tmplang | sed -e 's/\..*//') 修改成 lang_region="zh_CN" 也可以 多添加一行是为了以后改过来方便,直接删除添加的一行就可以了。 当然,把for循环中的/etc/X11/xinit/xinput.d/${lang_region}该成 /etc/X11/xinit/xinput.d/zh _CN也可以。 当然还有其他的改法,前提是你要懂得shell 脚本的语法,看得懂脚本的意思。这样修改后,即便系统是英文的,xinput.sh脚本也会去读取/etc/X11/xinit/xinput.d/zh _CN 文件并导出其中的内容、设置好XMODIFERS等输入法变量,并运行iiimx输入法程序。 那么为什么不在图形界面启动后直接运行iiimx输入法程序呢?实验一下就知道,这根本不行。因为输入法程序是须要和被输入的应用程序配合运行的软件,在运行过程中需要导出很多变量。直接运行iiimx只运行了主程序,而没相关变量,没办法和应用程序配合完成输入工作。 完成修改工作后,保存脚本文件。输入startx命令启动图形界面,就可以用全英文的系统界面和中文输入法了。但需要注意的是:由于系统是全英文的,默认输入法也是英文,通过GNOME或者KDE菜单起动的应用程序第一次输入中文的时候不能按ctrl+空格来切换到中文,需要用鼠标在任务栏上点击输入法图标切换,第一次切换后以后就可以用ctrl+空格快捷键来切换中英文输入法了。 四,一些后续问题 某些软件,比如Open Office,通过GNOME或者KDE菜单启动的话,即使切换到中文输入法也输不进中文,这是因为整个桌面系统的环境是英文的,软件“继承”了英文环境的相关变量,这些软件就“认死理”,就是不让输入中文,这时候可以打开一个gnome终端,把LANG变量临时设置成zh_CN.UTF-8 : [root@gucuiwen ~]# LANG="zh_CN.UTF-8" 然后在这个gnome终端中,用命令打开open office: [root@gucuiwen ~]# oowriter &这样Open Office就“继承”了gnome终端的LANG变量,起动后,工具栏和菜单等都是中文的,而且能输入中文。推而广之,任何软件都可以用这种方法,根据需要,打开中文界面的软件和英文界面的软件。要以英文界面运行软件时,只要从GNOME或者KDE菜单打开,要用中文界面运行软件时,在终端中修该LANG变量,从修改过LANG变量的终端中通过命令运行即可。当然,如果你还安装了其他语言的字体,你还可以以其他语言的界面来运行程序。如日语: [root@gucuiwen ~]# LANG="ja_JP.UTF-8" [root@gucuiwen ~]# gedit &我用上面的两条命令打开的gedit 编辑器就是全日语界面的,但是能输入中文和英文,并显示日文。从而达到,一个系统,多种语言和文字共存的目的。 当然,前提是要安装了日语字体和日语locale,否则所有有文字的地方会全部显示成一连串问号。总之,要先懂得原理,之后想怎么玩就怎么玩,随心所欲,完全不受限制,充分享受用Linux的乐趣。 linux输入中文之后却显示为乱码,该怎么解决这种情况?我们一起来了解一下吧。
一、登录linux系统打开 *** 作终端之后,输入echo$LANG可以查看当前使用的系统语言
在终端输入locale命令查看是否有中文语言包,如有zhcn表示已经安装了中文语言
如果没有中文语言可以通过网上下载安装中文语言包yumgroupinstallchinese-support。
二、临时更换语言
如果只是临时更换linux系统的语言环境,可以通过输入设置LANG=语言名称,如中文是
Zn_CN.UTF-8
三、打开设置把终端的编码选择中文,或者UTF8即可
linux中文显示乱码就介绍到这里了,希望对大家有所帮助。
本文章基于ThinkpadE15品牌、centos7系统撰写的。
如果是图形界面下的虚拟终端,设置(根据不同的 shell 修改不同的环境参数配置文件,如 bash 就修改 .bashrc 文件或 .bash_profile 文件)1 export LANG=zh_CN.UTF-8如果是远程登录(比如使用 ssh 登录),则根据你的客户端的环境进行设置,一个可能的方案是:1 export LANG=zh_CN.GB18030locale 看看你的当前是什么语言显示然后1vi /etc/sysconfig/i18n一般情况下linux服务器都是配置utf-8,不使用中文的。
评论列表(0条)