字符編碼字旭,編碼的意思是指將數(shù)據(jù)通過一定方式表達(dá)或儲存据沈。所以字符編碼就是字符的表現(xiàn)捶牢、儲存方式赃额,也就是字符集的實現(xiàn)方式。
對于一個字符集來說要正確編碼轉(zhuǎn)碼一個字符需要三個關(guān)鍵元素:字庫表(character repertoire)叫确、編碼字符集(coded character set)、字符編碼(character encoding form)芍锦。其中字庫表是一個相當(dāng)于所有可讀或者可顯示字符的數(shù)據(jù)庫竹勉,字庫表決定了整個字符集能夠展現(xiàn)表示的所有字符的范圍。編碼字符集娄琉,即用一個編碼值code point來表示一個字符在字庫中的位置次乓。字符編碼吓歇,將編碼字符集和實際存儲數(shù)值之間的轉(zhuǎn)換關(guān)系。一般來說都會直接將code point的值作為編碼后的值直接存儲票腰。例如在ASCII中A在表中排第65位城看,而編碼后A的數(shù)值是0100 0001也即十進(jìn)制的65的二進(jìn)制轉(zhuǎn)換結(jié)果。
字符編碼 | 每個字符字節(jié)數(shù) |
---|---|
ASCII | 1 |
UCS-2(Unicode) | 2 |
UCS-4(Unicode) | 4 |
UTF-8(Unicode) | 1 - 6 |
UTF-16(Unicode) | 2 - 4 |
GBK/GB2312(中文) | 1 - 2 |
GB18030(CJK) | 1 - 4 |
從上表可以看出杏慰,不同的字符編碼用不同的方式表達(dá)字符集测柠。
所以,根據(jù)所需要的字節(jié)數(shù)不同缘滥,把恒用2個字節(jié)表示一個字符的字符集(編碼)轰胁,叫做雙字節(jié)字符集(Double-Byte Character Set,DBCS)朝扼,其他的叫做多字節(jié)字符集(Multi-Byte Character Set赃阀,MBCS)。如上表中只有UCS-2才是DBCS字符集擎颖。
常見的字符集:
- Unicode:也叫統(tǒng)一字符集榛斯,它包含了幾乎世界上所有的已經(jīng)發(fā)現(xiàn)且需要使用的字符(如中文、日文搂捧、英文驮俗、德文等)。
- ASCII:早期的計算機系統(tǒng)只能處理英文异旧,所以ASCII也就成為了計算機的缺省字符集意述,包含了英文所需要的所有字符。
- GB2312:中文字符集吮蛹,包含ASCII字符集荤崇。ASCII部分用單字節(jié)表示,剩余部分用雙字節(jié)表示潮针。
- GBK:GB2312的擴(kuò)展术荤,但完整包含了GB2312的所有內(nèi)容。
- GB18030:GBK字符集的超集每篷,常叫大漢字字符集瓣戚,也叫CJK(Chinese,Japanese焦读,Korea)字符集子库,包含了中、日矗晃、韓三國語言中的所有字符仑嗅。