2024年5月8日发(作者:)

如何解决linux操作系统显示中文乱码问题

通过分析脚本,我知道,图形界面启动的时候脚本是根据LANG变量来决定是否启用输入法,以及启用哪

种语言的输入法等。问题在于:我们还没有把LANG变量改成英语之前,系统得到的LANG变量是中文的,

因此,它知道需要在图形界面启动过程中启用中文输入法,但把LANG变量改成英文后,系统根据LANG

变量知道系统是英文的,它便不再启动中文输入法,也不再设置和导出相关的变量,导致中文输入法不可

用。因此,只要在这个脚本中,“骗”过系统,让输入法脚本“以为”系统是中文的,它不就运行中文输入法,

并导出相关变量了吗? 于是,通过分析脚本,我在中的:

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 脚本的语法,看得懂脚本的意思。这样修改后,即便系

统是英文的,脚本也会去读取/etc/X11/xinit/xinput.d/zh _CN 文件并导出其中的内容、设置好

XMODIFERS等输入法变量,并运行iiimx输入法程序。

那么为什么不在图形界面启动后直接运行iiimx输入法程序呢?实验一下就知道,这根本不行。因为输

入法程序是须要和被输入的应用程序配合运行的软件,在运行过程中需要导出很多变量。直接运行iiimx只

运行了主程序,而没相关变量,没办法和应用程序配合完成输入工作。

完成修改工作后,保存脚本文件。输入startx命令启动图形界面,就可以用全英文的系统界面和中文

输入法了。但需要注意的是:由于系统是全英文的,默认输入法也是英文,通过GNOME或者KDE菜单

起动的应用程序第一次输入中文的时候不能按ctrl+空格来切换到中文,需要用鼠标在任务栏上点击输入法

图标切换,第一次切换后以后就可以用ctrl+空格快捷键来切换中英文输入法了。

四,一些后续问题

某些软件,比如Open Office,通过GNOME或者KDE菜单启动的话,即使切换到中文输入法也输不

进中文,这是因为整个桌面系统的环境是英文的,软件“继承”了英文环境的相关变量,这些软件就“认死理”,

就是不让输入中文,这时候可以打开一个gnome终端,把LANG变量临时设置成zh_-8 :

[root@gucuiwen ~]# LANG="zh_-8"

然后在这个gnome终端中,用命令打开open office:

[root@gucuiwen ~]# oowriter&

这样Open Office就“继承”了gnome终端的LANG变量,起动后,工具栏和菜单等都是中文的,而且

能输入中文。推而广之,任何软件都可以用这种方法,根据需要,打开中文界面的软件和英文界面的软件。

要以英文界面运行软件时,只要从GNOME或者KDE菜单打开,要用中文界面运行软件时,在终端中修

该LANG变量,从修改过LANG变量的终端中通过命令运行即可。当然,如果你还安装了其他语言的字体,

你还可以以其他语言的界面来运行程序。如日语:

[root@gucuiwen ~]# LANG="ja_-8"

[root@gucuiwen ~]# gedit&

我用上面的两条命令打开的gedit编辑器就是全日语界面的,但是能输入中文和英文,并显示日文。

从而达到,一个系统,多种语言和文字共存的目的。

当然,前提是要安装了日语字体和日语locale,否则所有有文字的地方会全部显示成一连串问号。总

之,要先懂得原理,之后想怎么玩就怎么玩,随心所欲,完全不受限制,充分享受用Linux的乐趣。

五, 快速设置步骤:

1.修改/etc/sysconf/i18n文件,把

LANG="zh_-8"

修改成:

LANG="en_-8"

2.修改/etc/X11/xinit/xinitrc.d/文件,把其中一行:

lang_region=$(echo $tmplang | sed -e 's/..*//')

修改成:

lang_region=”zh_CN”

3,重新启动图形界面,就可以用英文的界面并且正确显示中文和输入中文。