文档属于转载,不设财富值,看的上的拿走顺便给个好评,看不上的绕路,谢谢!
设置linux系统的LANG变量
对于国内的Linux用户,经常烦恼的一个问题是:系统常常在需要显示中文的时候却显示成了乱码,而由于某些原因,需要英文界面的系统的时候,却苦于系统不能正常输入和显示中文.另外,由于大部分主要Linux发行版都是以英语为主体的,英文界面的系统和应用程序不管在界面的美观程度和稳定程度上都比中文的略好一些,各种奇怪的BUG也要少一些。因此,很多稍微有英语基础的Linux用户都宁愿使用英文界面的系统。但是,矛盾又突现出来:在英文系统下,如何才能正常显示和输入中文呢?有没有两全其美的方案呢?因此,笔者开始探索如何解决这个问题。我的完美状态是:系统和应用程序全部为英文(系统菜单、应用程序工具栏、默认输入法等),而我需要阅读和撰写中文文档的时候,能正确的显示中文并调出中文输入法。经过尝试,设置成功,现在以FC4 Linux为例,讲解一些相关知识和设置过程。
本文主要通过修改系统配置的过程来展现修改linux系统配置的一般思路和过程,如果你不太有耐心看完,请跳过文章的1—4节,直接看第五节快速设置部分。
本文主要通过修改系统配置的过程来展现修改linux系统配置的一般思路和过程,如果你不太有耐心看完,请跳过文章的1—4节,直接看第五节快速设置部分。
一,相关变量介绍
我们知道大部分Linux系统是无所谓中文版和英文版的,以FC4 Linux为例,系统发行的时候全世界都一样,系统是中文的还是英文的完全取决于你选择的语言包。不同国家的人在安装使用的时候选择属于自己国家的语言包,应用程序中的语言也不是写死的,它根据系统的设置来调用相关的语言,所以,一个应用程序写出来不经过修改,全世界不同国家的用户都可以以母语界面使用它,这就事所谓的internationalization(国际化),简称 i18n。这也是未来软件的发展趋势。
那么,如果我在系统中安装了不同的语言包和不同的字体,系统是如何判断我所要的语言界面并调用相关的字体的呢?系统中那些文件和变量在控制这些呢?
在redHat和FC系列Linux系统下,记录系统默认使用语言的文件是/etc/sysconfig/i18n,如果默认安装的是中文的系统,i18n的内容如下:
代码:
LANG="zh_CN.UTF-8" SYSFONT="latarcyrheb-sun16" SUPPORTED="zh_CN.UTF-8:zh_CN:zh"
其中LANG变量是language的简称,稍微有英语基础的用户一看就看出来这个变量是决定系统的默认语言的,即系统的菜单、程序的工具栏语言、输入法默认语言等。SYSFONT是system font的简称,决定系统默认用哪一种字体。SUPPORTED变量决定系统支持的语言,即系统能够显示的语言。需要说明的是,由于计算机起源于英语国家,因此,不管你把这些变量设置成什么,英语总是默认支持的,而且不管用什么字体,英文字体总包含在其中。
这些变量中LANG变量是在字符模式和图形界面下都用到的,在你登录系统后就被读取并生效,相信很多人在字符界面下输入Linux命令的时候经常会遇到显示出来的出错信息是乱码的情况,必需安装zhcon或者cce等字符模式下的中文软件才能正常显示中文的出错信息。
如果我不要他显示中文乱码,我也不要为了看个很简单的出错信息而特意起用zhcon那我该怎么办呢?一个简单的零时解决的办法就是设置一下LANG变量:
代码:
[root@gucuiwen ~]# LANG="en_US.UTF-8"
即把系统的语言临时设置成英文,或者更简单一点,可以直接这样:
代码:
[root@gucuiwen ~]# LANG=""
即把LANG变量清空,由于英语是无论什么情况都支持的,LANG变量被清空后,系统就默认用英语。这样设置后,在字符模式下输出的出错信息等就是全英文的了。但这种设置是临时的,只是临时改变了LANG这个bash变量而已。当退出重新登录或者切换到其他字符
linux vi命令详解菜鸟教学终端后就无效了。到现在,读者应该想到了,只要把i18n文件中的LANG变量设置成英文的”en_US.UTF-8”,就可以永久解决这个问题了。修改后的文件如下:
代码:
#LANG="zh_CN.UTF-8" LANG="en_US.UTF-8" SYSFONT="latarcyrheb-sun16" SUPPORTED="zh_CN.UTF-8:zh_CN:zh"
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论