二、漢字的編碼
三、設定linux的字符集
四、lang環境變數
五、修改客戶端的字符集
六、字符集轉換工具
七、應用經驗
字元編碼是一種法則,在數字與符號之間建立的對應關係。不同的國家有不同的語言,包含的文字、標點符號、圖形符號各有不同。例如在ascii編碼中,用數字97表達字元』a』與字符集相對應,常見的字元編碼有ascii,gbk,gb18030,unicode等。
字符集是字元的集合,字元是文字和符號的總稱,用ascii編碼的字符集稱之為ascii字符集,用gbk編碼的字符集稱之為gbk字符集。
為了解決傳統的字元編碼方案的侷限,2023年發布了unicode(國際編碼、統一碼、萬國碼、單一碼、通用碼),它是電腦科學領域裡的一項業界標準,包括字符集、編碼方案等。unicode 將全世界所有的字元統一化,統一編碼,再也不存在字符集不相容和字元轉換的問題。
unicode 有以下三種編碼方式:
1)utf-8:相容ascii編碼;拉丁文、希臘文等使用兩個位元組;包括漢字在內的其它常用字元使用三個位元組;剩下的極少使用的字元使用四個位元組。
2)utf-16:對相對常用的60000餘個字元使用兩個位元組進行編碼,其餘的使用4位元組。
3)utf-32:固定使用4個位元組來表示乙個字元,存在空間利用效率的問題。
支援漢字(簡體中文)的編碼有gb2312、gb13000、gbk、gb18030和unicode(utf-8、utf-16、utf-32)。
1)gb2312
僅包含大部分的常用簡體漢字,但已經不能適應現在的需要。
2)gb13000
由於gb2312的侷限性,國家標準化委員會制定了gb13000編碼;但由於當時的硬體和軟體都已經支援了gb2312,而gb13000與gb2312完全不相容,所以沒有能夠得到大範圍的推廣使用。
3)gbk
有了gb13000的教訓,中國國家標準化委員會制定了gbk標準,並相容了gb2312標準,同時在gb2312標準的基礎上擴充套件了gb13000包含的字;由於該標準有微軟的支援,得到了廣泛的應用。
4)gb18030
gb18030編碼比gbk又新增了幾千個漢字,但由於碼位不足使用了2byte與4byte混合編碼方式,這給軟體開發增加了難度。
5)unicode
包含全世界所有國家需要用到的字元,是國際編碼,通用性強。
在作業系統和資料庫中,常用的漢字編碼有gbk、gb18030和unicode,gbk和gb18030的優勢是占用空間小,unicode的優勢是全球化的支援。
在應用開發中,如果不考慮全球化,最好的選擇是gbk和gb18030。
gbk和gb18030與unicode編碼之間需要轉換,否則會出現漢字亂碼。
1)locale命令用於檢視當前系統全部的已安裝的字符集,linux支援的符集約800種。
locale -a
2)檢視已安裝的中文字符集(只檢視中國大陸的,不包括香港和台灣)
上圖表示已經安裝了中文字符集。
如果您的linux系統沒有安裝中文字符集,可以用yum命令安裝。
我查了一些資料,安裝中文字符集軟體包的方法比較多,沒找到準確的說法,所以把多種方法都寫了進來,以下命令都可以執行,不會有***。
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
安裝後,執行locale -a|grep zh_cn
,如果顯示的內容如下,表示安裝成功。
centos6.x 字符集配置檔案在/etc/sysconfig/i18n檔案中。
centos7.x 字符集配置檔案在/etc/locale.conf檔案中,內容如下:
執行以下命令或者重啟系統使修改生效。
centos6.x
source /etc/sysconfig/i18n
centos7.x:
source /etc/locale.conf
lang環境變數存放的是linux系統的語言、地區、字符集,它不需要系統管理員手工設定,/etc/profile會呼叫/etc/profile.d/lang.sh指令碼完成對path的設定。
linux提供了iconv命令把檔案內容從一種編碼轉換成另一種編碼。
引數說明:
--list:列出iconv支援的編碼列表。
-f encoding:原始檔內容的編碼。
-t encoding:目標檔案內容的編碼。
-o file:指定輸出檔案。
-c:忽略輸出的非法字元。
-l:列出已知的編碼字符集。
-s:禁止警告資訊,但不是錯誤資訊。
--verbose:顯示進度資訊。
示例:把當前目錄的book1.c由gbk轉換成utf-8,結果輸出到/tmp/book1_utf8.c中。
iconv -f gbk -t utf-
8 book1.c -o /tmp/book1_utf8.c
1)linux系統在業務化之前,就應該確定字符集,然後不再改變。系統在業務化後,修改字符集是一件很麻煩的事情,最好別惹這個麻煩。
2)如果專案沒有全球化的需求,linux的字符集建議採用zh_cn.gbk。
3)雖然gb18030字符集比gbk更豐富,但是gb18030中有部分漢字是4位元組,這一點讓程式設計師很鬱悶,所以,程式設計師更傾向gbk字符集。
4)設定linux的字符集時,還要考慮web系統和資料庫系統採用的字符集,最好是大家都保持一致。
CentOS7設定中文字符集
二 漢字的編碼 三 設定linux的字符集 四 lang環境變數 五 修改客戶端的字符集 六 字符集轉換工具 七 應用經驗 字元編碼是一種法則,在數字與符號之間建立的對應關係。不同的國家有不同的語言,包含的文字 標點符號 圖形符號各有不同。例如在ascii編碼中,用數字97表達字元 a 與字符集相對...
CentOS7設定中文字符集
二 漢字的編碼 三 設定linux的字符集 四 lang環境變數 五 修改客戶端的字符集 六 字符集轉換工具 七 應用經驗 字元編碼是一種法則,在數字與符號之間建立的對應關係。不同的國家有不同的語言,包含的文字 標點符號 圖形符號各有不同。例如在ascii編碼中,用數字97表達字元 a 與字符集相對...
centos7 中文字符集
二 linux centos7 字符集設定 三 編碼轉換 ascii unicode utf 8 utf 16 utf 32 unicode 將全球所有的字元統一編碼,解決了字符集不相容和字元轉換的問題。全世界通用。gb2312 gb2312 80字符集,國家標準字符集 gb國標 收入漢字6763個...