掃盲系列之字符集編碼常識

2021-08-09 14:10:05 字數 1060 閱讀 4776

隨著網際網路的發展,字符集的發展也是與時俱進的,從最初的ascii到現在逐漸取代ascii的unicode,這期間還產生了很多其他的字符集和編碼格式。下面主要介紹幾個在日常開發中比較常見的字符集編碼。

在介紹具體的幾種字符集編碼之前,我們先了解一些基礎的概念。

早期的ascii主要是對英語中的字母來進行編碼,只需要由7個二進位制就可以實現所有的英文本母的編碼,一共可以表示128字元。第八位是留給後期拓展的。在早期的英文dos系統中ascii字符集已經完全夠用了。

屬於單位元組編碼,最多能表示的字元範圍是0-255,應用於英文系列。比如,字母』a』的編碼為0x61=97。

很明顯,iso8859-1編碼表示的字元範圍很窄,無法表示中文字元。但是,由於是單位元組編碼,和計算機最基礎的表示單位一致,所以很多時候,仍 舊使用iso8859-1編碼來表示。而且在很多協議上,預設使用該編碼。比如,雖然」中文」兩個字不存在iso8859-1編碼,以gb2312編碼為 例,應該是」d6d0 cec4」兩個字元,使用iso8859-1編碼的時候則將它拆開為4個位元組來表示:」d6 d0 ce c4」。而如果是utf編碼,則是6個位元組」e4 b8 ad e6 96 87」。iso-8859-1可以認為是ascii的拓展,這裡包含了一些西歐字母。

隨著網際網路的普及,iso-8858-1只能在英語使用國家的缺點暴露出來了,對其他國家的字元不支援迫使其他國家制定了屬於自己的字符集編碼,gb2312就是在這種趨勢下誕生的,他裡面包含了常用的簡體漢字,同時他也是可以相容ascii的,所以他是用乙個位元組來表示英文中的字母,對於漢字他是利用兩個位元組來進行儲存的。當時台灣由於gb2312不支援繁體字,所以自己也搞了一套字符集就是所謂的big5,後來又出來了一套gbk字符集編碼,這種編碼涵蓋了大部分的中文漢字,其中包含中文簡體和中文繁體。這幾種的編碼格式,都不是一種定長編碼,對於字母是用乙個位元組來進行儲存,對於漢字是用兩個位元組進行儲存。

對於上面的gb2312,gbk都是針對漢字的編碼,對於日語還有jis字符集,這些字符集之間的相容性很差,導致使用起來還是很麻煩,所以是時候出台一款能相容世界上大部分語言的統一字元編碼了,於是乎,unicode在這關鍵時刻應用而生。unicode是編碼的字符集中所有字元都是由兩個位元組儲存,對於是那些

字符集和字符集編碼雜談系列之我見

記得從看 windows程式設計 時就遇到過這個問題,字元編碼,字符集傻傻分不清楚,每次感覺弄清楚了,但不久遇到後又混亂了。所以這次記下一些自己的理解。簡而言之,即使一些字元的集合。不同的字符集包含不同的字元。如上所說,字符集只是一些字元的集合,並沒有定義這些字元如何在計算機記憶體中如何表示。於是,...

掃盲 字元編碼與字符集的區別

文 fenying 近來學習字元編碼,發現網路上總是把 字符集 character set 與 字元編碼 encode 搞混了,我也給弄得暈頭轉向。其實字元編碼與字符集在本質上就是不同的東西。字元 character 乙個文字就是乙個字元。在計算機中,字元是用數字來表示的,不同的文字用不同的數字表示...

計算機常識之編碼解碼字符集

編碼就是將字元對映成二進位制,解碼是將二進位制對映到字元 字符集包括以下幾種 ascii字符集 共收錄128個字元,所以使用1個位元組來進行編碼 iso 8859 1 字符集,共收錄256個字元,是在ascii字符集的基礎上又擴充了128個西歐常用字元 gb2312字符集收錄了漢字以及拉丁字母 希臘...