天天看點

位(bit)、位元組(byte)、字元、編碼

1、位:

也叫比特位,資料存儲的最小機關。每個二進制數字0或者1就是1個位;

2、位元組:

8個位構成一個位元組。即:1 byte (位元組)= 8 bit (位);

1 B = 1 byte (位元組)

1 KB = 1024 B(位元組);

1 MB = 1024 KB; (2^10 B)

1 GB = 1024 MB; (2^20 B)

1 TB = 1024 GB; (2^30 B)

3、字元:

a、A、中、+、*、の......均表示一個字元;

一般 utf-8 編碼下,一個漢字字元占用 3 個 位元組;

一般 gbk 編碼下,一個漢字字元占用 2 個 位元組;

4、字元集:

即各種各個字元的集合。也就是說漢字,字母(A、b、c)和符号(空格、引号..)會被收入标準中;

5、編碼:

規定每個“字元”分别用一個位元組還是多個位元組存儲,用哪些位元組來存儲,這個規定就叫做“編碼”。(其實際是對字元集中進行編碼,即:每個字元用二進制在計算中表示存儲);

通俗的說:編碼就是按照規則将字元翻譯成對應的二進制數,在電腦中運作存儲,使用者看的時候(比如浏覽器),再用對應的編碼解析成使用者可看懂的。

(1)标準ASCii字元集:有96個列印字元,和32個控制字元組成;一共96+32=128個;

用7位二進制數來對每1個字元進行編碼;

而由于7位還還不夠1個位元組,而電腦的内部常用位元組來用處理,每個位元組中多出來的最高位用0替代;

0 000 0000.........................0

0 111 1111..........................127; 從0----127,來表示128個ACSii編碼;

比如:字元 'A'----------在電腦内部用0100 0001 (65)來表示;

字元'a'-----------在電腦内部用0 110 0001 (97)來表示;

注意:'10'在電腦内部是沒有編碼的,因為它是字元串,而不是單個字元。可以分别對1,0字元編碼存儲;

(2)擴充ASCii字元集:将标準的ASCii最高位1,得到十進制代碼128---255(1 000 0000----1 111 1111);是以字元集一共有0---255, 256個字元;

(3)gb2312字元集: 所有漢字字元在計算機内部采用2個位元組來表示,每個位元組的最高位規定為1【正好與标準ASCii字元(最高位是0)不重疊,并相容】,不支援繁體字;

是以,gb2312表示漢字的編碼為:[129--255][129--255] (兩個位元組,每個位元組最高位是1);小于127的字元,與ASCii編碼相同;

(4)gbk字元集:gb2312的擴充,相容gb2312,除了收錄gb2312所有的字元外,還收錄了其他不常見的漢字、繁體字等;

gbk中字元是一個或兩個位元組,單位元組字元00--7F(0---127)這個區間和ASCII是一樣的;

雙位元組字元的第一個位元組是在81--FE(129--254)之間。通過這個可以判斷是單位元組還是雙位元組;

即:在gbk字元編碼,如果第一個位元組是>128的,則再往後找一個位元組,組成漢字;如果第一個位元組<128,則表示的是一個單位元組(此時和ASCII是一樣的);

(5)Unicode字元集:容納世界上所有語言字元和符号的集合;(以及對應的二進制數字);

Unicode隻是一個編碼規範,目前實際實作的unicode編碼隻要有三種:UTF-8,UCS-2和UTF-16,三種unicode字元集之間可以按照規範進行轉換。

(6)utf-8編碼:UTF-8(8-bit Unicode Transformation Format)是一種針對Unicode的可變長度字元編碼,也是一種字首碼。它可以用來表示Unicode标準中的任何字元,且其編碼中的第一個位元組仍與ASCII相容,這使得原來處理ASCII字元的軟體無須或隻須做少部分修改,即可繼續使用。是以,它逐漸成為電子郵件、網頁及其他存儲或發送文字的應用中,優先采用的編碼。