设置中文字符集
CentOS7設(shè)置中文字符集
?
目錄
- 一、字符編碼和字符集
- 1、字符編碼(character encoding):
- 2、字符集(Character set)
- 3、國際編碼(Unicode)
- 二、漢字的編碼
- 1、漢字的編碼
- 2、漢字的編碼選擇
- 3、編碼的轉(zhuǎn)換
- 三、設(shè)置Linux的字符集
- 1、查看當(dāng)前系統(tǒng)已安裝的字符集
- 2、安裝中文字符集
- 3、修改字符集配置文件
- 四、LANG環(huán)境變量
- 五、修改客戶端的字符集
- 六、字符集轉(zhuǎn)換工具
- 七、應(yīng)用經(jīng)驗
- 八、版權(quán)聲明
?
一、字符編碼和字符集
1、字符編碼(character encoding):
字符編碼是一種法則,在數(shù)字與符號之間建立的對應(yīng)關(guān)系。不同的國家有不同的語言,包含的文字、標(biāo)點(diǎn)符號、圖形符號各有不同。例如在ASCII編碼中,用數(shù)字97表達(dá)字符'a'與字符集相對應(yīng),常見的字符編碼有ASCII,GBK,GB18030,Unicode等。
2、字符集(Character set)
字符集是字符的集合,字符是文字和符號的總稱,用ASCII編碼的字符集稱之為ASCII字符集,用GBK編碼的字符集稱之為GBK字符集。
3、國際編碼(Unicode)
為了解決傳統(tǒng)的字符編碼方案的局限,1994年發(fā)布了Unicode(國際編碼、統(tǒng)一碼、萬國碼、單一碼、通用碼),它是計算機(jī)科學(xué)領(lǐng)域里的一項業(yè)界標(biāo)準(zhǔn),包括字符集、編碼方案等。Unicode 將全世界所有的字符統(tǒng)一化,統(tǒng)一編碼,再也不存在字符集不兼容和字符轉(zhuǎn)換的問題。
Unicode 有以下三種編碼方式:
1)UTF-8:兼容ASCII編碼;拉丁文、希臘文等使用兩個字節(jié);包括漢字在內(nèi)的其它常用字符使用三個字節(jié);剩下的極少使用的字符使用四個字節(jié)。
2)UTF-16:對相對常用的60000余個字符使用兩個字節(jié)進(jìn)行編碼,其余的使用4字節(jié)。
3)UTF-32:固定使用4個字節(jié)來表示一個字符,存在空間利用效率的問題。
二、漢字的編碼
1、漢字的編碼
支持漢字(簡體中文)的編碼有GB2312、GB13000、GBK、GB18030和Unicode(UTF-8、UTF-16、UTF-32)。
1)GB2312
僅包含大部分的常用簡體漢字,但已經(jīng)不能適應(yīng)現(xiàn)在的需要。
2)GB13000
由于GB2312的局限性,國家標(biāo)準(zhǔn)化委員會制定了GB13000編碼;但由于當(dāng)時的硬件和軟件都已經(jīng)支持了GB2312,而GB13000與GB2312完全不兼容,所以沒有能夠得到大范圍的推廣使用。
3)GBK
有了GB13000的教訓(xùn),中國國家標(biāo)準(zhǔn)化委員會制定了GBK標(biāo)準(zhǔn),并兼容了GB2312標(biāo)準(zhǔn),同時在GB2312標(biāo)準(zhǔn)的基礎(chǔ)上擴(kuò)展了GB13000包含的字;由于該標(biāo)準(zhǔn)有微軟的支持,得到了廣泛的應(yīng)用。
4)GB18030
GB18030編碼比GBK又新增了幾千個漢字,但由于碼位不足使用了2byte與4byte混合編碼方式,這給軟件開發(fā)增加了難度。
5)Unicode
包含全世界所有國家需要用到的字符,是國際編碼,通用性強(qiáng)。
2、漢字的編碼選擇
在操作系統(tǒng)和數(shù)據(jù)庫中,常用的漢字編碼有GBK、GB18030和Unicode,GBK和GB18030的優(yōu)勢是占用空間小,Unicode的優(yōu)勢是全球化的支持。
在應(yīng)用開發(fā)中,如果不考慮全球化,最好的選擇是GBK和GB18030。
3、編碼的轉(zhuǎn)換
GBK和GB18030與Unicode編碼之間需要轉(zhuǎn)換,否則會出現(xiàn)漢字亂碼。
三、設(shè)置Linux的字符集
1、查看當(dāng)前系統(tǒng)已安裝的字符集
1)locale命令用于查看當(dāng)前系統(tǒng)全部的已安裝的字符集,Linux支持的符集約800種。
locale -a2)查看已安裝的中文字符集(只查看中國大陸的,不包括香港和臺灣)
locale -a|grep zh_CN上圖表示已經(jīng)安裝了中文字符集。
2、安裝中文字符集
如果您的Linux系統(tǒng)沒有安裝中文字符集,可以用yum命令安裝。
我查了一些資料,安裝中文字符集軟件包的方法比較多,沒找到準(zhǔn)確的說法,所以把多種方法都寫了進(jìn)來,以下命令都可以執(zhí)行,不會有副作用。
yum -y groupinstall chinese-support yum -y install chinese-support yum -y install kde-l10n-Chinese yum -y install ibus-table-chinese-1.4.6-3.el7.noarch安裝后,執(zhí)行l(wèi)ocale -a|grep zh_CN,如果顯示的內(nèi)容如下,表示安裝成功。
3、修改字符集配置文件
CentOS6.x 字符集配置文件在/etc/sysconfig/i18n文件中。
CentOS7.x 字符集配置文件在/etc/locale.conf文件中,內(nèi)容如下:
執(zhí)行以下命令或者重啟系統(tǒng)使修改生效。
CentOS6.x
source /etc/sysconfig/i18nCentOS7.x:
source /etc/locale.conf四、LANG環(huán)境變量
LANG環(huán)境變量存放的是Linux系統(tǒng)的語言、地區(qū)、字符集,它不需要系統(tǒng)管理員手工設(shè)置,/etc/profile會調(diào)用/etc/profile.d/lang.sh腳本完成對PATH的設(shè)置。
五、修改客戶端的字符集
客戶端的字符集必須與Linux服務(wù)端一致,否則會出現(xiàn)亂碼,以SecureCRT為例。修改會話的屬性,在Appearance界面中的Character
encoding下拉框中選擇。
六、字符集轉(zhuǎn)換工具
Linux提供了iconv命令把文件內(nèi)容從一種編碼轉(zhuǎn)換成另一種編碼。
參數(shù)說明:
--list:列出iconv支持的編碼列表。
-f encoding:源文件內(nèi)容的編碼。
-t encoding:目標(biāo)文件內(nèi)容的編碼。
-o file:指定輸出文件。
-c:忽略輸出的非法字符。
-l:列出已知的編碼字符集。
-s:禁止警告信息,但不是錯誤信息。
--verbose:顯示進(jìn)度信息。
示例:
把當(dāng)前目錄的book1.c由gbk轉(zhuǎn)換成utf-8,結(jié)果輸出到/tmp/book1_utf8.c中。
iconv -f gbk -t utf-8 book1.c -o /tmp/book1_utf8.c七、應(yīng)用經(jīng)驗
1)Linux系統(tǒng)在業(yè)務(wù)化之前,就應(yīng)該確定字符集,然后不再改變。系統(tǒng)在業(yè)務(wù)化后,修改字符集是一件很麻煩的事情,最好別惹這個麻煩。
2)如果項目沒有全球化的需求,Linux的字符集建議采用zh_CN.gbk。
3)雖然gb18030字符集比gbk更豐富,但是gb18030中有部分漢字是4字節(jié),這一點(diǎn)讓程序員很郁悶,所以,程序員更傾向gbk字符集。
4)設(shè)置Linux的字符集時,還要考慮WEB系統(tǒng)和數(shù)據(jù)庫系統(tǒng)采用的字符集,最好是大家都保持一致。
八、版權(quán)聲明
C語言技術(shù)網(wǎng)原創(chuàng)文章,轉(zhuǎn)載請說明文章的來源、作者和原文的鏈接。
來源:C語言技術(shù)網(wǎng)(www.freecplus.net)
作者:碼農(nóng)有道
如果文章有錯別字,或者內(nèi)容有錯誤,或其他的建議和意見,請您留言指正,非常感謝!!!
分類:?LInux教程
標(biāo)簽:?C++,?C,?Linux,?Mysql,?Oracle,?數(shù)據(jù)庫
總結(jié)
- 上一篇: centos7修改系统语言为简体中文
- 下一篇: printf输出颜色和ANSI控制码(高