zìjié 位元組(Byte): 位元組是通過網路傳輸資訊(或在硬碟或記憶體中儲存資訊)的單位。 位元組是電腦資訊技術用於計量儲存容量和傳輸容量的一種計量單位,1個位元組等於8位二進位。 在ASCII碼中,一個英文字母(不分大小寫)佔一個位元組的空間,一個中文漢字佔兩個位元組的空間。 符號:英文標點佔一個位元組,中文標點佔兩個位元組. 一個位元字序列,在電腦中作為一個數字單元,一般為8位位元,如一個ASCII碼就是一個位元組,此類單位的換算為: 1千吉位元組(TB,Terabyte)=1024吉位元組 (2的40次方位元組) (1TB=1024GB) 1吉位元組(GB,Gigabyte) =1024MB (2的30次方位元組) (1GB=1024MB) 1兆位元組(MB,Megabyte) =1024KB (2的20次方位元組) (1MB=1024KB) 1KB(KB,Kilobyte) =1024位元組 (2的10次方位元組) 1位元組(Byte) = 8位(bit)
註:更大的單位,還有 PB(Petabyte,1PB=1024TB)、EB(Exabyte,1EB=1024PB)、ZB(Zettabyte,1ZB=1024EB)、YB(Yottabyte,1YB=1024ZB)…… 1.2 字元,位元組,字串 理解編碼的關鍵,是要把字元的概念和位元組的概念理解準確。這兩個概念容易混淆,我們在此做一下區分: 概念描述 舉例 字元 人們使用的記號,抽象意義上的一個符號。 '1', '中', 'a', '$', '¥', …… 位元組 電腦中儲存資料的單元,一個8位的位元,是一個很具體的儲存空間。 0x01, 0x45, 0xFA, …… ANSI 字串 在記憶體中,如果“字元”是以 ANSI 編碼形式存在的,一個字元可能使用一個位元組或多個位元組來表示,那麼我們稱這種字串為 ANSI 字串或者多位元組字串。如,"中文123" (佔7位元組)。 字元集和字碼頁 對於 ANSI 編碼方式,存在不同的字元集(Charset)。同樣的位元組序列,在不同的字元集下表示的字元不一樣。要正確解析一個 ANSI 字串,還要選擇正確的字元集,否則就可能導致所謂的亂碼現象。不同語言版本的作業系統,都有一個預設的字元集。在不指定字元集的情況下,系統會使用此字元集來解析 ANSI 字串。也就是說,如果我們在簡體中文版的 Windows 下開啟了一個由日文作業系統儲存的 ANSI 文字檔(僅包含 ANSI 字串的文字檔),我們看到的將是亂碼。但是,如果我們使用 Visual Studio 之類的帶編碼選擇的文字編輯器開啟此檔案,並且選擇正確的字元集,我們將可以看到它的原貌。注意:簡體中文字元集中的繁體字和繁體中文字元集中的繁體字,編碼不一定相同(實事證明,似乎是完全不同)。 每個字元集都有一個唯一的編號,稱為字碼頁(Code Page)。簡體中文(GB2312)的字碼頁為 936,而系統預設字元集的字碼頁為 0,它表示根據系統的語言設定來選擇一個合適的字元集。 UNICODE 字串 在記憶體中,如果“字元”是以在 UNICODE 中的序號存在的,那麼我們稱這種字串為 UNICODE 字串或者寬位元組字串。Unicode 中,每個字元都佔兩個位元組。如, L"中文123"(佔10位元組)。 由於不同 ANSI 編碼所規定的標準是不相同的(字元集不同),因此,對於一個給定的多位元組字串,我們必須知道它採用的是哪一種字元集則,才能夠知道它包含了哪些“字元”。而對於 UNICODE 字串來說,不管在什麼環境下,它所代表的“字元”內容總是不變的。Unicode 有著統一的標準,它定義了世界上絕大多數的字元的編碼,使得拉丁文、數字、簡體中文、繁體中文、日文都能一同一種編碼方式儲存。 參考資料: 1.http://news.newhua.com/news1/programming/2007/1211/071211141827567CJ808093734C2I7CK.html 2.About Cluster(英文),http://gupeng.blogspot.com/2005/04/kb-mb-gb-tb-pb-eb-zb-yb.html |