红联Linux门户
Linux帮助

Linux远程桌面乱码解决及引起的相关问题、字库安装

发布时间:2015-02-17 15:07:28来源:linux网站作者:xiaowu218

一、解决linux中文乱码问题

通过xmanager远程访问linux(我这里使用RedHat as5),原先本机可以看到的中文出现乱码(ssh终端访问时也是乱码)。如何解决这一问题?

其实,很简单只要设置系统字符集就行。具体如下:

1、修改/etc/sysconfig/i18n文件(注意做好备份,最好不要删除原系统内容,可以用#注释掉)

2、原文件内容如下:

#LANG="zh_CN.UTF-8"

LANGUAGE="zh_CN.UTF-8:zh_CN.GB18030:zh_CN"

SUPPORTED="zh_CN.UTF-8:zh_CN.GB18030:zh-CN:zh:en_US.UTF-8:en_US:en"

SYSFONT=*lat0-sun16

3、修改后内容如下:

#LANG="zh_CN.UTF-8"

LANG="zh_CN.GB18030"

LANGUAGE="zh_CN.GB18030:zh_CN.UTF-8:zh_CN"

SUPPORTED="zh_CN.GB18030:zh_CN.UTF-8:zh-CN:zh:en_US.UTF-8:en_US:en"

SYSFONT=*lat0-sun16

4、重新启动系统

简单解释一下,LANG变量是language的简称,决定系统的默认语言的,即系统的菜单、程序的工具栏语言、输入法默认语言等;SYSFONT是system font的简称,决定系统默认用哪一种字体;SUPPORTED变量决定系统支持的语言,即系统能够显示的语言。


二、可能引起的问题

如果修改后,个别已经安装的软件可能后出现一些莫名奇妙的问题,如:java开发的一些应用程序中原先配置文件中有中文使用utf-8编码,但是现在系统字符集变成了gb18030,再次运行java程序时jvm会使用现有系统字符集将导致程序出错。

最简单的解决方法就是,在运行前临时改变当前字符集。具体操作如下:

1、同一终端模式下: LANG="en_US.UTF-8" (根据具体字符集决定)

2、同一终端模式下: 可运行的程序或脚本


三、安装字库

可能是因为在安装linux的过程中忘记了选择支持中文,所以机器在安装完之后从Mozzila访问中文网站全是乱码,在“查看”菜单中即使选择GBK的编码字符集也无效,另外在shell中的中文也为乱码,openOffice打开之后也全为乱码。重装机器是个苦差事,不想那样做。于是我选择了对其进行汉化。

第一步:
修改文件/etc/sysconfig/i18n。将里面的en:US.UTF8修改成zh_CN.GB18030,修改后的内容如下:
LANG="zh_CN.GB18030"
LANGUAGE="zh_CN.GB18030:zh_CN.GB2312:zh_CN"
SUPPORTED="zh_CN.GB18030:zh_CN:zh"
SYSFONT="lat0-sun16"
SYSFONTACM="8859-15"
第二步:
安装中文字库。字库文件一般是独立于系统的,所以我选择了将windows下的字库文件安装到linux中去,windows中的字库文件位于C:\WINDOWS\Fonts下,选择其中的三个文件(simsun.ttc,tahoma.ttf ,tahomabd.ttf)。
首先将这三个字库文件直接复制到linux分区的/usr/share/fonts/default/TrueType。这里主要涉及windows系统如何与linux系统交换数据的问题。可以将三个字库文件复制到windows的一个FAT32格式的分区中去,然后在linux中用命令:
mount –t vfat –o iocharset=gb2312 /dev/hda6 /mnt/e
其次我们要配置显卡文件(/etc/X11/XF86Config)。X中可以支持TrueType字体(一种可缩放的矢量字体,这些字体需要字体渲染引擎来读取。字体渲染引擎有很多种,xtt这种据说对中文支持很好,我们现在就是要配置指定用xtt这个字体渲染引擎去/usr/share/fonts/default/TrueType目录读取上面的三个字体文件的信息(如大小,分辩率,编码等)。修改其中的Section "Module"处,加入Load   “xtt”让其用使用xtt这个引擎,并注释掉与其冲突的#Load "freetype"与 #Load "type1"。另外,在Section "Files"处加入FontPath “/usr/share/fonts/default/TrueType”一句让xtt引擎去这个目录去找字库文件。修改后的部分文件如下:
Section "Files"
# RgbPath is the location of the RGB database. Note, this is the name of the
# file minus the extension (like ".txt" or ".db"). There is normally
# no need to change the default.
 
# Multiple FontPath entries are allowed (they are concatenated together)
# By default, Red Hat 6.0 and later now use a font server independent of
# the X server to render fonts.
 
RgbPath      "/usr/X11R6/lib/X11/rgb"
FontPath     "unix/:7100"
FontPath     “/usr/share/fonts/default/TrueType”
EndSection
 
Section "Module"
Load "dbe"
Load "extmod"
Load "fbdevhw"
Load "glx"
Load "record"
#Load "freetype"
#Load "type1"
Load "dri"
Load   “xtt”
EndSection
最后,建立配置文件fonts.dir与fonts.scale。方法很简单,在/usr/share/fonts/default/TrueType运行命令ttmkfdir > fonts.dir即可生成一个有内容的fonts.scale的文件与一个空的fonts.dir。然后在fonts.scale中加入一行(别忘了修改第一行的那个数字):
ds=y:ai=0.3:SimSun.ttf –misc-SimSun-bold-i-normal –-0-0-0-0-p-0-gbk-0
接着,将fonts.scale复制一份到fonts.dir即可。(运行命令cp fonts.scale fonts.dir)
最后,将/usr/x11R6/lib/X11/fonts/encodings/encoding.dir复制到/usr/share/fonts/default/TrueType中。
重启机器,OK。