幾種編碼方式

2021-08-29 05:19:50 字數 1562 閱讀 4261

一直以來,對於幾種編碼方式我一直很困惑,弄不清它們之間的關係,最近在學習hadoop裡的text類時又涉及到了編碼的問題,因此我索性抽點時間來簡單研究一下幾種編碼,下面是我的簡要總結。

計算機裡,所有的資訊最終是以二進位制的0或1來進行儲存的,同樣的,在計算機裡,字元最終也是要用0和1來進行儲存,那麼究竟要怎麼表示呢?我們可以這樣,設立乙個標準,給每個字元設定乙個唯一的編號,而這個編號正是可以用計算機裡的0和1來表示的。例如,我們知道1個位元組有8個位元位,這8個位元位就可以表示0~255這256個數,那麼我們就可以讓這256個數分別唯一對應乙個字元,那麼就可以表示256個字元了。其中,每個字元對應的數字就是這個字元的編碼。

(1)ascii碼簡介

ascii碼是美國人制定的一套字元編碼,它對英語字元與二進位制位之間的關係進行了統一規定。ascii碼一共規定了128個字元的編碼(其中由32個是不能列印出來的控制符號),例如字母a的ascii碼對應的十進位制表示為65,二進位制表示為01000001。ascii碼只占用了乙個位元組的後面7位,位元組的第一位統一規定為0.

(2)ascii碼的編碼方式:

位元組的首位為0,後面7位為字元對應的ascii編碼。

對於英文來說,用128個字元就足夠編碼,但對於其他語言,例如中文,哪怕是乙個位元組的8位全部使用,也就是有256種表示,也遠遠不夠,因此往往需要多個位元組來對符號進行表示,這時就無法再繼續使用ascii編碼,而要採取其他編碼方式。

unicode是乙個符號集,它將世界上所有的符號都納入其中,每個符號對應乙個碼點,且每個碼點都被給予了乙個獨一無二的編碼,即碼點值。unicode只是乙個符號集,它只規定了乙個符號對應的二進位制**,但並沒有規定怎麼進行儲存,這就需要有統一的編碼方式來實現unicode,目前的實現方式包括utf-8、utf-16、utf-32等。

(1)utf-8簡介

utf-8是一種編碼方式,它用來實現unicode。utf-8是目前網際網路上使用最廣的一種unicode的實現方式。

(2)utf-8的編碼規則:

a. 對於單位元組的符號,位元組的第一位設為0,後面7位為這個符號的unicode碼。因此對於英文本母,其utf-8編碼與ascii編碼是一樣的。

b. 對於n個位元組(n > 1)的符號,第乙個位元組的前n位設定為1,第n+1位設定為0,後面的每個位元組前2位設定為10,剩下的沒有提及的二進位制位,就是該符號對應的unicode碼,位高低順序也相同。

下表對utf-8編碼進行了總結:

下面以漢字「好」(unicode是\u597d,對應的二進位制表示為0101100101111101)為例介紹如何利用utf-8對unicode進行編碼:

a. 由上表可以知道,該unicode應該採用3個位元組來編碼,因此第乙個位元組的開頭應該是1110,第

二、三個位元組則是以10開頭,因而可以得到其utf-8的格式應該是1110***x 10****** 10******;

b. 從該unicode二進位制表示的最後乙個二進位制位開始,從後往前依此填充上述的x,最後得到的結果就是 11100101|10100101|10111101,十六進製制表示就是e5a5bd.

字元常見的幾種編碼方式

分類 jsp溫故而知新 2013 12 05 11 19 906人閱讀 收藏 舉報 無論在是在編輯文字檔案的時候,還是在製作網頁的時候,總會遇到文字編碼方式的問題。如果處理不當,就會出現亂碼的問題。因此,有必要對文字的編碼方式做乙個詳盡的了解。常見的一些字元編碼方式無非有 unicode ascii...

字元常見的幾種編碼方式

不管在是在編輯文字檔案的時候,還是在製作網頁的時候,總會遇到文字編碼方式的問題。假設處理不當,就會出現亂碼的問題。因此,有必要對文字的編碼方式做乙個詳盡的了解。常見的一些字元編碼方式無非有 unicode ascii gbk gb2312 utf 8。以下先對常見的這一些字元編碼方式作下說明 1.a...

字元常見的幾種編碼方式

無論在是在編輯文字檔案的時候,還是在製作網頁的時候,總會遇到文字編碼方式的問題。如果處理不當,就會出現亂碼的問題。因此,有必要對文字的編碼方式做乙個詳盡的了解。常見的一些字元編碼方式無非有 unicode ascii gbk gb2312 utf 8。下面先對常見的這一些字元編碼方式作下說明 1.a...