幫同窗處理Linux下面中文顯示亂碼的問題,順便把過程記錄下來。這個是個國內Linux用戶煩惱的問題,因爲大部分的Linux發行版都是以英語爲主體的,並且英文在通用性和穩定性上都比中文要好一些,各類奇怪的BUG也要少一點。因此,雖然在解決中文亂碼問題,可是仍是強烈建議使用英文的系統。linux
咱們知道咱們的操做系統是無所謂中文版和英文版的,不管是windows仍是Linux,系統發行的時候全世界都是同樣的內核,系統呈現給咱們是英文仍是中文,徹底取決於你選擇的語言包。不一樣國家的人在安裝使用的時候選擇屬於本身國家的語言包,應用程序中的語言也不是寫死的,它根據系統的設置來調用相關的語言,因此,一個應用程序寫出來不通過修改,全世界不一樣國家的用戶均可以以母語界面使用它,這就是所謂的internationalization(國際化),簡稱 i18n。這也是將來軟件的發展趨勢。 shell
那麼,若是我在系統中安裝了不一樣的語言包和不一樣的字體,系統是如何判斷我所要的語言界面並調用相關的字體的呢? 系統中那些文件和變量在控制這些呢?
windows
可使用locale命令,查看當前系統默認採用的字符集bash
# locale
在redHat/CentOS系統下,記錄系統默認使用語言的文件是/etc/sysconfig/i18n,若是默認安裝的是中文的系統,i18n的內容以下:
ide
LANG="zh_CN.UTF-8" SYSFONT="latarcyrheb-sun16" SUPPORTED="zh_CN.UTF-8:zh_CN:zh"
其中LANG變量是language的簡稱,稍微有英語基礎的用戶一看就看出來這個變量是決定系統的默認語言的,即系統的菜單、程序的工具欄語言、輸入法默認語言等。工具
SYSFONT是system font的簡稱,決定系統默認用哪種字體。字體
SUPPORTED變量決定系統支持的語言,即系統可以顯示的語言。編碼
須要說明的是,因爲計算機起源於英語國家,所以,無論你把這些變量設置成什麼,英語老是默認支持的,並且無論用什麼字體,英文字體總包含在其中。 spa
那麼如何顯示中文呢?操作系統
一、系統必須安裝中文語言包才行(中文字體)
# yum -y groupinstall chinese-support
二、僅僅有語言包還不行,咱們得設置相應的字符集編碼
## 臨時生效 # export LANG="zh_CN.UTF-8" # 設置爲中文 # export LANG="en_US.UTF-8" # 設置爲英文,我比較喜歡這樣 export LANG=C ## 永久生效, 編輯/etc/sysconfig/i18n(最好reboot一下) LANG="zh_CN.UTF-8" ## 或者編輯 /etc/profile 配置文件,添加以下一行 export LANG="zh_CN.UTF-8" # 從新載入 . /etc/profile ## 查看當前的字符集 echo $LANG
好了,通過上面的設置,在系統自己應該就可以支持中文顯示了。
一樣,要解決亂碼問題,須要保證2兩點:
選擇支持中文的字體
終端軟件的字符編碼
常見終端軟件設置:
Xshell:
SecureCRT:
把文件從windowss拷貝到到linux,拷貝過去後常常發現中文顯示亂碼。緣由是Windows中默認的文件格式是 GBK(gb2312),而Linux通常都是UTF-8。比較繁瑣的方法是在windows下用程序把內容轉換爲utf-8編碼格式的,可是至關麻煩, 並且遇到一個文件轉一回。下面介紹一下,在Linux中如何一勞永逸的解決這個問題,查看文件的編碼及如何進行對文件進行編碼轉換。
爲了不這些問題,最好的方式就是統一編碼。對於文本文件,都統一保存爲UTF8格式,windows下面不要使用word,記事本,推薦Sublime text, 或者 notepad++。