掃盲 字元編碼與字符集的區別

2021-07-24 04:28:48 字數 2180 閱讀 7902

文/fenying

近來學習字元編碼,發現網路上總是把「字符集(character set)」與「字元編碼(encode)」搞混了,我也給弄得暈頭轉向。

其實字元編碼與字符集在本質上就是不同的東西。

字元(character)>

乙個文字就是乙個字元。在計算機中,字元是用數字來表示的,不同的文字用不同的數字表示。

字符集(character set)

既然是「集」,也就是「集合」,「字符集」自然就是「一定量字元的集合」。

乙個字符集包含了固定數量的字元,如ascii字符集包含a-z、a-z、0-9、半形標點符號和特殊控制符號(如換行符)在內的128個字元。

字元編碼(encode)

編碼,意思是指將資料通過一定方式表達或儲存,這個方式就叫編碼。所以字元編碼就是字元的表現、儲存方式,也就是字符集的實現方式

但需要注意的是:有的字元編碼和字符集的名稱是一致的

從上可以看出,字符集是字元的集合,字元編碼是把字符集的實現方式。

字符集型別

先看下字元的表達方式。看下表。

字元編碼

每個字元位元組數

ascii

1 ucs-2(unicode)

2ucs-4(unicode)

4utf-8(unicode)

1 - 6

utf-16(unicode)

2 - 4

gbk/gb2312(中文)

1 - 2

gb18030(cjk)

1 - 4

表 1

從上表可以看出,不同的字元編碼用不同的方式表達字符集。

所以,根據所需要的位元組數不同,把恆用2個位元組表示乙個字元的字符集(編碼),叫做雙位元組字符集(double-byte character set,dbcs),其他的叫做多位元組字符集(multi-byte character set,mbcs)。如上表中只有ucs-2才是dbcs字符集。

常見的字符集

unicode:也叫統一字符集,它包含了幾乎世界上所有的已經發現且需要使用的字元(如中文、日文、英文、德文等)。

ascii:早期的計算機系統只能處理英文,所以ascii也就成為了計算機的預設字符集,包含了英文所需要的所有字元。

gb2312:中文字符集,包含ascii字符集。ascii部分用單位元組表示,剩餘部分用雙位元組表示。

gbk:gb2312的擴充套件,但完整包含了gb2312的所有內容。

gb18030:gbk字符集的超集,常叫大漢字字符集,也叫cjk(chinese,japanese,korea)字符集,包含了中、日、韓三國語言中的所有字元。

常見的字元編碼

見表1。

字符集轉換

從一種字符集轉換到另一種字符集,由於某些字符集的並不包含原先字符集中的字元,所以有可能會導致某些字元丟失。

例如gbk轉換成ascii字符集,就會導致除了單位元組字元(ascii部分)外的所有字元丟失。

注意,計算機上以ascii方式(其實,ascii代表了所有的mbcs字符集)儲存檔案雖然可以儲存中文,但實質上是因為gb2312和gbk等字符集是mbcs字符集,所以才歸類到ascii中,其實本質上還是是gbk字符集而不是ascii字符集。

字元編碼轉換

由於字元編碼是基於字符集的,所以字元編碼不同也可能導致部分字元丟失。但如果是相同字符集,例如utf-8(unicode)到utf-16(unicode)編碼,那麼是不會丟失的,因為它們是同一種字符集的不同表現形式。

因此,希望某些**、作者、技術人員別把字符集和字元編碼搞混了。否則字符集、字元編碼本身就比較難懂,再搞混了就更難懂了。

閱讀(3357)|

編碼字符集與字符集編碼的區別

無論歷史上的ucs還是現如今的unicode,兩者指的都是編碼字符集,而不是字符集編碼。乙個抽象字符集其實就是指字元的集合,例如所有的英文本母是乙個抽象字符集,所有的漢字是乙個抽象字符集,在給乙個抽象字元集合中的每個字元都分配乙個 整數編號之後 注意這個整數並沒有要求大小 這個字符集就有了順序,就成...

unicode字元顯示方框 掃盲字元編碼

引言 想必大家之前一定 會被字元編碼困惑。ascii,gb2312,unicode,gb18030等等,或者說大家遇到過檔案亂碼問題。那麼這一系列的編碼到底是什麼?他們之間又會有什麼區別?又為什麼產生亂碼問題?大家應該知道,我們現在的計算機都是二進位制,在通俗的來講,就是01構成!那麼問題來了。我們...

字元,字符集,編碼的區別

ascii碼為單位元組,用7位二進位制數表示,由於計算機1個位元組是8位二進位制數,所以最高位為0,即00000000 01111111或0x00 0x7f。unicode 中文 萬國碼 國際碼 統一碼 單一碼 是電腦科學領域裡的一項業界標準。它對世界上大部分的文字系統進行了整理 編碼,使得電腦可以...