LINUX中文亂碼問題
最近,公司在XP係統於LINUX之間傳(chuán)數據時出現了中文亂碼問題!
首先,解釋一下字符集:
漢字編碼:
ASCII:
American Standard Code for Information Interchange,美(měi)國信息交換標準碼。 目前計算機中(zhōng)用得最廣泛的字符集及其編(biān)碼,由美國國家標準局(ANSI)製定。 它已被國際標準化組織(ISO)定為國際標準,稱為ISO 646標準。 ASCII字符集由控製字符和圖形字符組成。 在計算機的存儲單元中,一個ASCII碼值占一個字節(8個二進製位),其最(zuì)高位(b7)用作奇偶校驗位(wèi)。 所謂奇偶校驗,是指(zhǐ)在代碼傳送過程中用來檢驗是否出現錯誤的一(yī)種方法,一般分奇校驗和偶校驗兩種。 奇校驗規定:正(zhèng)確的代(dài)碼一個字節中1的個數必須是(shì)奇(qí)數,若非奇數,則在最高位b7添1。 偶校驗規定:正確的代碼一個字(zì)節中1的個數必須是偶(ǒu)數,若非偶數,則在最(zuì)高位b7添1。
UTF:
Unicode 的實現方式不(bú)同於編碼方式。 一個字符的Unicode編碼是確定的,但是(shì)在實際(jì)傳輸過程中(zhōng),由於不同係統平台的設計不一定一致,以及出於節省空間的目的,對Unicode編碼的實現方式(shì)有所不同(tóng)。 Unicode的實現方式稱為Unicode轉換格式(Unicode Translation Format,簡稱(chēng)為 UTF)。 * UTF-8: 8bit變長編碼,對於大多數常用字符集(ASCII中0~127字符)它(tā)隻使用單(dān)字節,而(ér)對其它常用字符(特(tè)別是朝鮮和(hé)漢(hàn)語會意文字),它使用3字節。 * UTF-16: 16bit編碼,是變長碼,大致相當於20位編碼,值在0到0x10FFFF之間,基本上(shàng)就是unicode編碼的(de)實現,與CPU字序有關(guān)。
注意:ASCII char (2) ;UTF-8 寬字符 wchar 4倍 。兼容(róng)性最(zuì)好的編碼就是UTF-8! 畢(bì)竟GBK/GB2312是國(guó)內的標(biāo)準,當(dāng)我們(men)大量(liàng)使用國外的(de)開源軟(ruǎn)件時,UTF-8才是編(biān)碼界最通用的語言。
定義該環境的排序和比較規則
用於字符分類和字(zì)符串處理,控製所有字符的(de)處理方式,包括字符編碼,字符是單字節還是多字節,如何打印等。是最重要的一個環境變量。
貨幣格式(shì)
非貨幣的數字顯示格式
時間和日期格式
提示信息的語言。另外還(hái)有(yǒu)一(yī)個LANGUAGE參數,它與LC_MESSAGES相似(sì),但(dàn)如果該參數一旦設置,則(zé)LC_MESSAGES參數就會失效。LANGUAGE參(cān)數可同(tóng)時設置(zhì)多種語言信息,如LANGUANE="zh_CN.GB18030:zh_CN.GB2312:zh_CN"。
LC_*的默認值,是(shì)最(zuì)低級別的設置,如果LC_*沒(méi)有設置,則(zé)使用該值。類似於 LC_ALL。
它是一個宏,如果該值設置了,則該值(zhí)會覆蓋所有(yǒu)LC_*的設置(zhì)值。注意,LANG的值不受該宏影(yǐng)響。
設置前(qián),使用默認locale:
[root@db-wanggaofei ~]# locale
LANG="POSIX"
LC_CTYPE="POSIX"
LC_NUMERIC="POSIX"
LC_TIME="POSIX"
LC_COLLATE="POSIX"
LC_MONETARY="POSIX"
LC_MESSAGES="POSIX"
LC_PAPER="POSIX"
LC_NAME="POSIX"
LC_ADDRESS="POSIX"
LC_TELEphones="POSIX"
LC_MEASUREMENT="POSIX"
LC_IDENTIFICATION="POSIX"
LC_ALL=
設置後,使用zh_CN.GDK中文locale:
[root@db-wanggaofei ~]# export LC_ALL=zh_CN.GBK
[root@db-wanggaofei ~]# 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_PAPER="zh_CN.GBK"
LC_NAME="zh_CN.GBK"
LC_ADDRESS="zh_CN.GBK"
LC_TELEphones="zh_CN.GBK"
LC_MEASUREMENT="zh_CN.GBK"
LC_IDENTIFICATION="zh_CN.GBK"
LC_ALL=zh_CN.GBK
· 安裝完成locales包後,係(xì)統會自動進行locale配置,你隻要選擇所需的locale,可以多選。最後指定一個係統默認的locale。這樣係統就會幫你自動生成相應的locale和配置好係統的locale。
· # This file lists locales that you wish to have built. You can find a list
· # of valid supported locales at /usr/share/i18n/SUPPORTED. Other
· # combinations are possible, but may not be well tested. If you change
· # this file, you need to rerun locale-gen.
· #
·zh_CN.GBK GBK
·zh_CN.UTF-8 UTF-8
-----------------------------------------
在(zài)我看來隻要搞清楚LANG和SUPPORTED就OK了(le),其他可能平時也用不(bú)太多。再(zài)參考篇文(wén)章,如下(xià),是講如何設置環境變量的。
-------------------------------------------
修改 /etc/sysconfig/i18n 文件(jiàn),如(rú)
LANG="en_US.UTF-8&qu
關鍵詞:LINUX,中文亂碼
閱讀本文後您有什麽感想? 已有 人給出評價!
- 0
- 0
- 0
- 0
- 0
- 0