字符集

一、定義

字符集是一批字符的集合,每個字符對應(yīng)一個特殊的字符編號,計算機(jī)要存儲字符,需要通過字符集找到字符編號,并轉(zhuǎn)化為二進(jìn)制數(shù)據(jù)存儲在內(nèi)存中。常用的字符集有ASCII 字符集和Unicode字符集。

二、數(shù)據(jù)的解碼和存儲過程

字符的存儲大致分為倆步,第一是將字符通過特定的字符集轉(zhuǎn)化為字符編號,第二是將字符編號轉(zhuǎn)化為二進(jìn)制寫入內(nèi)存,解碼正好是一個逆過程,從二進(jìn)制數(shù)據(jù)轉(zhuǎn)化為編號再轉(zhuǎn)為字符最終顯示在屏幕上。
解碼的過程中就拋出了一個問題比如有下面一段二進(jìn)制數(shù)據(jù)'11001111100101110111001110001'我們?nèi)绾螖嘣~?這段數(shù)字代表幾個字符?
針對這個問題,主流的有倆種方法處理:

定長處理:

比如ASCII采用一個字節(jié),也就是8bit的長度代表一個字符,
這種方法的缺點(diǎn)是,8位二進(jìn)制,最多只能容納2^8個字符

特殊標(biāo)記處理:

比如utf-8等,在這里需要明確一點(diǎn),計算機(jī)的最小存儲單位是bit,一個字節(jié)等于8bit,計算機(jī)讀取一個完整字節(jié)的速度最快,所以在存儲和解碼的過程中都是以B位最小單位的。因此這種解碼方法一般是以從最高位開始有幾個連續(xù)的1來標(biāo)記第一個字符的二進(jìn)制編碼占用了幾個字節(jié)的數(shù)據(jù)。

三、ASCII 字符集

ASCII 總共包含 128 個字符,主要包括英文字母,阿拉伯?dāng)?shù)字,和一些符號,用 7 個比特位(Bit)恰好能夠存儲,不過考慮到計算機(jī)一般把字節(jié)(Byte)作為基本單元,為了操作方便,我們不妨用一個字節(jié)(也就是 8 個比特位)來存儲 ASCII。這樣雖然浪費(fèi)了一個比特位,但是讀寫效率提高了。

四、Unicode字符集

Unicode 為了兼容 ASCII,在設(shè)計時刻意保留了原來 ASCII 中字符的編號,所以英文字母和阿拉伯?dāng)?shù)字在 Unicode 中的編號都非常小,用一個字節(jié)足以容納。中是一個漢字,編號比較大,一般要用兩個字節(jié)才能容納。
unicode不能單獨(dú)使用需要配合utf才能正常使用,這是因?yàn)?,unicode僅僅定義了字符與其對應(yīng)的字符編號,對于如何斷詞并沒有規(guī)定在內(nèi),而utf正是用來處理這一部分的,他在unicode的基礎(chǔ)上建立一個unicode編號與utf編號的映射關(guān)系,而utf編號是一組以特殊標(biāo)記開頭的編號,因此unicode+任意一種utf便可完成字符的存儲與二進(jìn)制數(shù)據(jù)的解碼。
unicode有三種編碼方式,utf-8 utf-16 utf-32,后倆種不常用,這里只介紹下utf-8

utf-8

UTF-8 的編碼規(guī)則很簡單:如果只有一個字節(jié),那么最高的比特位為 0;如果有多個字節(jié),那么第一個字節(jié)從最高位開始,連續(xù)有幾個比特位的值為 1,就使用幾個字節(jié)編碼,剩下的字節(jié)均以 10 開頭。
具體的表現(xiàn)形式為:
0xxxxxxx:單字節(jié)編碼形式,這和 ASCII 編碼完全一樣,因此 UTF-8 是兼容 ASCII 的;
110xxxxx 10xxxxxx:雙字節(jié)編碼形式;
1110xxxx 10xxxxxx 10xxxxxx:三字節(jié)編碼形式;
11110xxx 10xxxxxx 10xxxxxx 10xxxxxx:四字節(jié)編碼形式。
xxx 就用來存儲 Unicode 中的字符編號,不足8位的需要進(jìn)行補(bǔ)0。

字符 unicode(16) unicode(2) utf-8 utf-8(2)
u4e2d 1001110 00101101 &#x4E2D 110\color{blue}{00}\color{red}{100}10\color{red}{111000}10\color{red}{101101}

*黑色代表幾個字節(jié)
*藍(lán)色補(bǔ)零
*紅色unicode編號

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容