初入linux的程序員們,經常會受到亂碼的問候??芍^“始亂終棄”。因為亂碼,并且最終放棄了linux的不在少數。好吧,言歸正傳,下面來看一下linux亂碼的具體解決辦法吧。
方法一: 修改/root/.bash_profile文件,增加export LANG=zh_CN.GB18030
該文件在用戶目錄下,對于其他用戶,也必須相應修改該文件。
使用該方法時putty能顯示中文,但桌面系統是英文,而且所有的網頁中文顯示還是亂碼
方法二:
修改/etc/sysconfig/i18n文件#LANG="en_US.UTF-8"#SUPPORTED="en_US.UTF-8:en_US:en"#SYSFONT="latarcyrheb-sun16"
修改為:
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"
參考:
Linux中文亂碼問題
最近,公司在XP系統于LINUX之間傳數據時出現了中文亂碼問題!
首先,字符集:
漢字編碼:
* GB2312字集是簡體字集,全稱為GB2312(80)字集,共包括國標簡體漢字6763個。 * BIG5字集是臺灣繁體字集,共包括國標繁體漢字13053個。 * GBK字集是簡繁字集,包括了GB字集、BIG5字集和一些符號,共包括21003個字符。 * GB18030是國家制定的一個強制性大字集標準,全稱為GB18030-2000,它的推出使漢字集有了一個“大一統”的標準。
ASCII:
American Standard Code for Information Interchange,美國信息交換標準碼。 目前計算機中用得最廣泛的字符集及其編碼,由美國國家標準局(ANSI)制定。 它已被國際標準化組織(ISO)定為國際標準,稱為ISO 646標準。 ASCII字符集由控制字符和圖形字符組成。 在計算機的存儲單元中,一個ASCII碼值占一個字節(8個二進制位),其最高位(b7)用作奇偶校驗位。 所謂奇偶校驗,是指在代碼傳送過程中用來檢驗是否出現錯誤的一種方法,一般分奇校驗和偶校驗兩種。 奇校驗規定:正確的代碼一個字節中1的個數必須是奇數,若非奇數,則在最高位b7添1。
偶校驗規定:正確的代碼一個字節中1的個數必須是偶數,若非偶數,則在最高位b7添1。
UTF:
Unicode 的實現方式不同于編碼方式。 一個字符的Unicode編碼是確定的,但是在實際傳輸過程中,由于不同系統平臺的設計不一定一致,以及出于節省空間的目的,對Unicode編碼的實現 方式有所不同。 Unicode的實現方式稱為Unicode轉換格式(Unicode Translation Format,簡稱為 UTF)。 * UTF-8: 8bit變長編碼,對于大多數常用字符集(ASCII中0~127字符)它只使用單字節,而對其它常用字符(特別是朝鮮和漢語會意文字),它使用3字節。 * UTF-16: 16bit編碼,是變長碼,大致相當于20位編碼,值在0到0x10FFFF之間,基本上就是unicode編碼的實現,與CPU字序有關。注意:ASCII char (2) ;UTF-8 寬字符 wchar 4倍 。兼容性最好的編碼就是UTF-8! 畢竟GBK/GB2312是國內的標準,當大量使用國外的開源軟件時,UTF-8才是編碼界最通用的語言。
在Linux中通過locale來設置程序運行的不同語言環境,locale由ANSI C提供支持。locale的命名規則為<語言>_<地區>.<字符集編碼>,如zh_CN.UTF-8,zh代表中 文,CN代表大陸地區,UTF-8表示字符集。
在locale環境中,有一組變量,代表國際化環境中的不同設置:
1. LC_COLLATE
定義該環境的排序和比較規則2. LC_CTYPE
用于字符分類和字符串處理,控制所有字符的處理方式,包括字符編碼,字符是單字節還是多字節,如何打印等。是最重要的一個環境變量。新聞熱點
疑難解答