常見的字元編碼優缺點

2022-08-26 19:54:09 字數 1987 閱讀 9996

總結一下常見的幾種編碼優缺點

ansi編碼是一種對

ascii

碼的拓展:

ansi

編碼用0x00~0x7f

(即十進位制下的0到

127)範圍的

1 個位元組來表示

1 個英文本元,超出乙個位元組的

0x80~0xffff

範圍來表示其他語言的其他字元。也就是說,

ansi

碼僅在前

128(

0-127

)個與ascii

碼相同,之後的字元全是某個國家語言的所有字元。值得注意的是,兩個位元組最多可以儲存的字元數目是2的

16次方,即

65536

個字元,這對於乙個語言的字元來說,絕對夠了。還有

ansi

編碼其實包括很多編碼:中國制定了

gb2312

編碼,用來把中文編進去另外,日本把日文編到

shift_jis

裡,南韓把韓文編到

euc-kr

裡,各國有各國的標準。受制於當時的條件,不同語言之間的

ansi

碼之間不能互相轉換,這就會導致在多語言混合的文字中會有亂碼

為了解決不同國家ansi編碼的衝突問題,

unicode

應運而生:如果全世界每乙個符號都給予乙個獨一無二的編碼,那麼亂碼問題就會消失。這就是

unicode

,就像它的名字都表示的,這是一種所有符號的編碼。

unicode標準也在不斷發展,但最常用的是用兩個位元組表示乙個字元(如果要用到非常偏僻的字元,就需要

4個位元組)。現代作業系統和大多數程式語言都直接支援

unicode

。但是問題在於,原本可以用乙個位元組儲存的英文本母在unicode裡面必須存兩個位元組(規則就是在原來英文本母對應

ascii

碼前面補

0),這就產生了浪費。那麼有沒有一種既能消除亂碼,又能避免浪費的編碼方式呢?答案就是

utf-8

!這是一種變長的編碼方式:它可以使用1~4個位元組表示乙個符號,根據不同的符號而變化位元組長度,當字元在

ascii

碼的範圍時,就用乙個位元組表示,保留了

ascii

字元乙個位元組的編碼做為它的一部分,如此一來

utf-8

編碼也可以是為視為一種對

ascii

碼的拓展。值得注意的是

unicode

編碼中乙個中文字元佔

2個位元組,而

utf-8

乙個中文字元佔

3個位元組。從

unicode

到uft-8

並不是直接的對應,而是要過一些演算法和規則來轉換。

在計算機記憶體中,統一使用unicode編碼,當需要儲存到硬碟或者需要傳輸的時候,就轉換為

utf-8

編碼。用記事本編輯的時候,從檔案讀取的utf-8字元被轉換為

unicode

字元到記憶體裡,編輯完成後,儲存的時候再把

unicode

轉換為utf-8

儲存到檔案。

gbk  擴充套件中文

gb編碼(相容了

gb2312

)更全編碼方式:兩個位元組表示乙個漢字

英文本母或半形標點占用乙個位元組

unicode:國際組織編碼,容納世界上所有的文字和符號的字元編碼

(1)包括utf-32編碼

每個字元用乙個int來表示  

abcd

需要占用4個

int特點:簡單,太浪費空間

(2)utf-16編碼

特點:用1到2個

short

來表示乙個字元

(3)utf-8 編碼

用1到4

個位元組來表示乙個字元(比較節省空間)

如果這個字元小(在000000-00007f之間)則用乙個位元組 ,一次類推如果該字元比較大比如漢字(數就比較大)占用兩個位元組,這個字元如果在大就用三個位元組

常見的儲存結構及其優缺點

邏輯關係對映到物理儲存的對映方式有4種 順序 鏈式 索引 雜湊,相應地就產生了四種儲存結構 順序儲存結構 鏈式儲存結構 索引儲存結構 雜湊儲存結構。優點 儲存密度大 可以隨機訪問,在o 1 內查詢 修改元素。缺點 表示關係能力弱 維護關係困難 邏輯關係發生變化,物理上難同步 在o n 內插入和刪除資...

常見記憶體分配演算法及優缺點

常見記憶體分配演算法及優缺點 常見記憶體分配演算法及優缺點如下 1 首次適應演算法。使用該演算法進行記憶體分配時,從空閒分割槽鏈首開始查詢,直至找到乙個能滿足其大小要求的空閒分割槽為止。然後再按照作業的大小,從該分割槽中劃出一塊記憶體分配給請求者,餘下的空閒分割槽仍留在空閒分割槽鏈中。該演算法傾向於...

常見機器學習演算法優缺點

1 線性模型 形式簡單 易於建模 很好的可解釋性 2 邏輯回歸 無需事先假設資料分布 可得到近似概率 對率函式任意階可導的凸函式,許多數值優化演算法都可直接用於求取最優解 3 線性判別分析 lda 當兩類資料同先驗 滿足高斯分布且協方差相等時,lda可達到最優分類 4 boosting 代表adab...