一、修改系統預設語言及中文亂碼問題
記錄系統預設使用語言的檔案是/etc/sysconfig/i18n,如果預設安裝的是中文的系統,i18n的內容如下: lang="zh_cn.utf-8" sysfont="latarcyrheb-sun16" supported="zh_cn.utf-8:zh_cn:zh" linuxtype=targeted
lang變數是language的簡稱,決定系統的預設語言的,即系統的選單、程式的工具欄語言、輸入法預設語言等。sysfont是system font的簡稱,決定系統預設用哪一種字型。supported變數決
定系統支援的語言,即系統能夠顯示的語言。需要說明的是,由於計算機起源於英語國家,因此,不管你把這些變數設定成什麼,英語總是預設支援的,而且不管用什麼字型,英文本型總包含在其中。
臨時調整終端亂碼現象:# lang="en_us.utf-8" 即把系統的語言臨時設定成英文,或者更簡單一點,可以直接這樣: # lang="" 或export lang=""
lang變數被清空後,系統就預設用英語。這樣設定後,在字元模式下輸出的出錯資訊等就是全英文的了。但這種設定是臨時的,只是臨時改變了lang這個bash變數而已。當退出重新登入或者切換到其他字元終端後就無效了。只要把i18n檔案中的lang變數設定成英文的」en_us.utf-8」,就可以永久解決這個問題了。命令:vi etc/sysconfig/i18n
修改後的檔案如下: #lang="zh_cn.utf-8" lang="en_us.utf-8" sysfont="latarcyrheb-sun16" supported="zh_cn.utf-8:zh_cn:zh"
請不要把lang變數簡單的清空,因為這個變數不僅在字元模式下用到,在圖形介面下也用到,簡單清空在字元模式下確實不會有問題,但在圖形介面下,卻會造成中文無法正常顯示的情況,在過去redhat系列的版本中i18n檔案中還有乙個叫language的變數,專門控制圖形介面下的語言設定,現在的fc系列中已經把這兩個變數整合成乙個變數了。
二、locale
程式執行使用一套語言需要有字符集(資料)和字型(顯示),locale是根據計算機使用者所使用的語言,所在國家或者地區,以及當地的文化傳統所定義的乙個軟體執行時的語言環境。
locale常用操作
1、檢視現有語言環境:
locale
2、可用語言環境:
locale -a
3、臨時修改語言環境:
aix:
export lang=en_us
export lang=zh_cn
linux:
export lang=en_us.utf-8
export lang=zh_cn.utf-8
4、永久修改系統級字符集:
修改/etc/sysconfig/i18n
英文版系統:
lang="en_us.utf-8"
sysfont="latarcyrheb-sun16"
中文版系統:
lang="zh_cn.utf-8"或者lang="zh_cn.gbk"
sysfont="latarcyrheb-sun16"
vi /.bash_profile
三、安裝中文字符集
1、安裝所有與中文支援相關的包
# yum -y groupinstall chinese-support
2、修改字元編碼配置檔案
# vi /etc/sysconfig/i18n
修改後內容如下:
lang="zh_cn.utf-8"
supported="zh_cn:zh:en_us.utf-8:en_us:en:zh_cn.gb18030"
sysfont="latarcyrheb-sun16"
locale詳解
在 linux 中通過 locale 來設定程式執行的不同語言環境,locale 由 ansi c 提供支援。locale 的命名規則為:
《語言》_《地區》.《字符集編碼》
如:zh_cn.utf-8,zh代表中文,cn代表大陸地區,utf-8表示字符集。
在locale環境中,有一組變數,代表國際化環境中的不同設定:
1、lc_collate
定義該環境的排序和比較規則
2、lc_ctype
用於字元分類和字串處理,控制所有字元的處理方式,包括字元編碼,字元是單位元組還是多位元組,如何列印等。是最重要的乙個環境變數。
3、lc_monetary
貨幣格式
4、lc_numeric
非貨幣的數字顯示格式
5、lc_time
時間和日期格式
6、lc_messages
提示資訊的語言。另外還有乙個language引數,它與lc_messages相似,但如果該引數一旦設定,則lc_messages引數就會失效。language引數可同時設定多種語言資訊,如
languane="zh_cn.gb18030:zh_cn.gb2312:zh_cn"。
7、lang
lc_*的預設值,是最低級別的設定,如果lc_*沒有設定,則使用該值。類似於 lc_all。
8、lc_all
它是乙個巨集,如果該值設定了,則該值會覆蓋所有lc_*的設定值。注意,lang的值不受該巨集影響。
乙個例子:
設定前,使用預設locale:
# locale
lang="posix"
lc_ctype="posix"
lc_numeric="posix"
lc_time="posix"
lc_collate="posix"
lc_monetary="posix"
lc_messages="posix"
lc_*****="posix"
lc_name="posix"
lc_address="posix"
lc_telephone="posix"
lc_measurement="posix"
lc_identification="posix"
lc_all=
設定後,使用zh_cn.gbk中文locale:
# export lc_all=zh_cn.gbk
# locale
lang=zh_cn.utf-8
lc_ctype="zh_cn.gbk"
lc_numeric="zh_cn.gbk"
lc_time="zh_cn.gbk"
lc_collate="zh_cn.gbk"
lc_monetary="zh_cn.gbk"
lc_messages="zh_cn.gbk"
lc_*****="zh_cn.gbk"
lc_name="zh_cn.gbk"
lc_address="zh_cn.gbk"
lc_telephone="zh_cn.gbk"
lc_measurement="zh_cn.gbk"
lc_identification="zh_cn.gbk"
lc_all=zh_cn.gbk
"c"是系統預設的locale,"posix"是"c"的別名。所以當我們新安裝完乙個系統時,預設的locale就是c或posix。
lang="zh_cn.utf-8"
sysfont="latarcyrheb-sun16"
supported="zh_cn.utf-8:zh_cn:zh"
linuxtype=targeted
lang="zh_cn.gb18030"
language="zh_cn.gb18030:zh_cn.gb2312:zh_cn"
supported="zh_cn.gb18030:zh_cn:zh:en_us.utf-8:en_us:en"
sysfont="lat0-sun16"
Linux中文亂碼問題
安裝了centos6.5的虛擬機器,安裝過程中選擇了英文系統和英文語系,因此在虛擬機器中輸入中文字元時出現了亂碼的情況 檢視當前語言系統 echo lang user luihj1 bin echo lang en us.utf 8 檢視安裝的語言包,發現並沒有安裝中文語言包 user luihj1...
Linux 中文亂碼問題
陸陸續續碰到了很多linux下的中文亂碼問題,記錄下來 vi etc my.cnf 在mysqld下新增 mysqld character set server utf8 找到tomcat conf sever.xml 在下面的標籤中插入uriencoding utf 8 redirectport ...
Linux 中文亂碼問題
弄了好久還是亂碼 最終方法 進入 vim etc vimrc中 原先只有乙個 set encoding utf 8 fileencodings ucs bom,utf 8,cp936 改成 let termencoding encoding set encoding utf 8 fileencodi...