技術(shù)員聯(lián)盟提供win764位系統(tǒng)下載,win10,win7,xp,裝機(jī)純凈版,64位旗艦版,綠色軟件,免費(fèi)軟件下載基地!

當(dāng)前位置:主頁(yè) > 教程 > 服務(wù)器類(lèi) >

Linux系統(tǒng)中與中文顯示相關(guān)的一些編碼設(shè)置方法

來(lái)源:技術(shù)員聯(lián)盟┆發(fā)布時(shí)間:2018-01-30 06:21┆點(diǎn)擊:

  對(duì)于國(guó)內(nèi)的Linux用戶(hù),經(jīng)常煩惱的一個(gè)問(wèn)題是:系統(tǒng)常常在需要顯示中文的時(shí)候卻顯示成了亂碼,而由于某些原因,需要英文界面的系統(tǒng)的時(shí)候,卻苦于系統(tǒng)不能正常輸入和顯示中文.另外,由于大部分主要Linux發(fā)行版都是以英語(yǔ)為主體的,英文界面的系統(tǒng)和應(yīng)用程序不管在界面的美觀程度和穩(wěn)定程度上都比中文的略好一些,各種奇怪的BUG也要少一些。因此,很多稍微有英語(yǔ)基礎(chǔ)的Linux用戶(hù)都寧愿使用英文界面的系統(tǒng)。但是,矛盾又突現(xiàn)出來(lái):在英文系統(tǒng)下,如何才能正常顯示和輸入中文呢?有沒(méi)有兩全其美的方案呢?因此,筆者開(kāi)始探索如何解決這個(gè)問(wèn)題。我的完美狀態(tài)是:系統(tǒng)和應(yīng)用程序全部為英文(系統(tǒng)菜單、應(yīng)用程序工具欄、默認(rèn)輸入法等),而我需要閱讀和撰寫(xiě)中文文檔的時(shí)候,能正確的顯示中文并調(diào)出中文輸入法。經(jīng)過(guò)嘗試,設(shè)置成功,現(xiàn)在以FC4 Linux為例,講解一些相關(guān)知識(shí)和設(shè)置過(guò)程。

  本文主要通過(guò)修改系統(tǒng)配置的過(guò)程來(lái)展現(xiàn)修改linux系統(tǒng)配置的一般思路和過(guò)程,如果你不太有耐心看完,請(qǐng)?zhí)^(guò)文章的1—4節(jié),直接看第五節(jié)快速設(shè)置部分。

  一,相關(guān)變量介紹

  我們知道大部分Linux系統(tǒng)是無(wú)所謂中文版和英文版的,以FC4 Linux為例,系統(tǒng)發(fā)行的時(shí)候全世界都一樣,系統(tǒng)是中文的還是英文的完全取決于你選擇的語(yǔ)言包。不同國(guó)家的人在安裝使用的時(shí)候選擇屬于自己國(guó)家的語(yǔ)言包,應(yīng)用程序中的語(yǔ)言也不是寫(xiě)死的,它根據(jù)系統(tǒng)的設(shè)置來(lái)調(diào)用相關(guān)的語(yǔ)言,所以,一個(gè)應(yīng)用程序?qū)懗鰜?lái)不經(jīng)過(guò)修改,全世界不同國(guó)家的用戶(hù)都可以以母語(yǔ)界面使用它,這就事所謂的internationalization(國(guó)際化),簡(jiǎn)稱(chēng) i18n。這也是未來(lái)軟件的發(fā)展趨勢(shì)。

  那么,如果我在系統(tǒng)中安裝了不同的語(yǔ)言包和不同的字體,系統(tǒng)是如何判斷我所要的語(yǔ)言界面并調(diào)用相關(guān)的字體的呢?系統(tǒng)中那些文件和變量在控制這些呢?

  在redHat和FC系列Linux系統(tǒng)下,記錄系統(tǒng)默認(rèn)使用語(yǔ)言的文件是/etc/sysconfig/i18n,如果默認(rèn)安裝的是中文的系統(tǒng),i18n的內(nèi)容如下:

  代碼:

  代碼如下:

  LANG="zh_CN.UTF-8" SYSFONT="latarcyrheb-sun16" SUPPORTED="zh_CN.UTF-8:zh_CN:zh"

  其中LANG變量是language的簡(jiǎn)稱(chēng),稍微有英語(yǔ)基礎(chǔ)的用戶(hù)一看就看出來(lái)這個(gè)變量是決定系統(tǒng)的默認(rèn)語(yǔ)言的,即系統(tǒng)的菜單、程序的工具欄語(yǔ)言、輸入法默認(rèn)語(yǔ)言等。SYSFONT是system font的簡(jiǎn)稱(chēng),決定系統(tǒng)默認(rèn)用哪一種字體。SUPPORTED變量決定系統(tǒng)支持的語(yǔ)言,即系統(tǒng)能夠顯示的語(yǔ)言。需要說(shuō)明的是,由于計(jì)算機(jī)起源于英語(yǔ)國(guó)家,因此,不管你把這些變量設(shè)置成什么,英語(yǔ)總是默認(rèn)支持的,而且不管用什么字體,英文字體總包含在其中。

  這些變量中LANG變量是在字符模式和圖形界面下都用到的,在你登錄系統(tǒng)后就被讀取并生效,相信很多人在字符界面下輸入Linux命令的時(shí)候經(jīng)常會(huì)遇到顯示出來(lái)的出錯(cuò)信息是亂碼的情況,必需安裝zhcon或者cce等字符模式下的中文軟件才能正常顯示中文的出錯(cuò)信息。如果我不要他顯示中文亂碼,我也不要為了看個(gè)很簡(jiǎn)單的出錯(cuò)信息而特意起用zhcon那我該怎么辦呢?一個(gè)簡(jiǎn)單的零時(shí)解決的辦法就是設(shè)置一下LANG變量:

  代碼:

  代碼如下:

  [root@gucuiwen ~]# LANG="en_US.UTF-8"

  即把系統(tǒng)的語(yǔ)言臨時(shí)設(shè)置成英文,或者更簡(jiǎn)單一點(diǎn),可以直接這樣:

  代碼:

  代碼如下:

  [root@gucuiwen ~]# LANG=""

  即把LANG變量清空,由于英語(yǔ)是無(wú)論什么情況都支持的,LANG變量被清空后,系統(tǒng)就默認(rèn)用英語(yǔ)。這樣設(shè)置后,在字符模式下輸出的出錯(cuò)信息等就是全英文的了。但這種設(shè)置是臨時(shí)的,只是臨時(shí)改變了LANG這個(gè)bash變量而已。當(dāng)退出重新登錄或者切換到其他字符終端后就無(wú)效了。

  到現(xiàn)在,讀者應(yīng)該想到了,只要把i18n文件中的LANG變量設(shè)置成英文的”en_US.UTF-8”,就可以永久解決這個(gè)問(wèn)題了。修改后的文件如下:

  代碼:

  代碼如下:

  #LANG="en_US.UTF-8" SYSFONT="latarcyrheb-sun16" SUPPORTED="zh_CN.UTF-8:zh_CN:zh"

  請(qǐng)不要把LANG變量簡(jiǎn)單的清空,因?yàn)檫@個(gè)變量不僅在字符模式下用到,在圖形界面下也用到,簡(jiǎn)單清空在字符模式下確實(shí)不會(huì)有問(wèn)題,但在圖形界面下,卻會(huì)造成中文無(wú)法正常顯示的情況,在過(guò)去Re d ha t 系列的版本中i18n文件中還有一個(gè)叫LANGUAGE的變量,專(zhuān)門(mén)控制圖形界面下的語(yǔ)言設(shè)置,現(xiàn)在的FC系列中已經(jīng)把這兩個(gè)變量整合成一個(gè)變量了。

  經(jīng)過(guò)修改這個(gè)變量,重新起動(dòng)圖形界面后,就可以看到界面一經(jīng)完全是英文的了。但是按ctrl+空格卻不能調(diào)出中文輸入法,輸入法菜單中也不能添加中文輸入法。我們只簡(jiǎn)單的修改了LANG變量改變了系統(tǒng)語(yǔ)言設(shè)置,當(dāng)然這一步也可以用圖形界面下的工具修改,而不用親自修改配置文件。

  二,關(guān)于運(yùn)行等級(jí)