字符編碼

平時我們經(jīng)常會遇到各種各樣的字符編碼,最常見的就是 ASCII髓梅、UTF-8 除此之外還有 GB2312褒脯、GBKEASCII 等等很多的字符編碼坟募。我們經(jīng)常提到的Unicode是一個字符集岛蚤,并不是一種字符編碼方案。但是這些編碼方案到底是如何將字符編碼的懈糯,對應(yīng)的歷史發(fā)展關(guān)系又是怎樣的呢涤妒?

字符集術(shù)語

在講述字符編碼之前,這里統(tǒng)一一下字符集術(shù)語赚哗。這部分是純概念的部分她紫,不感興趣的同學(xué)可以直接跳過這部分。

  • 字符
    字符是指字母屿储、數(shù)字贿讹、標(biāo)點、表意文字(比如漢語)扩所、符號围详,或其他文本形式的書寫"原子"。由統(tǒng)一字符集 (Universal Character Set, UCS) 首創(chuàng),為多種語言中的很多字符開發(fā)了一系列標(biāo)準(zhǔn)化的文本名稱助赞,它們常用來便捷的命名字符买羞,而且不會與其他字符沖突。
  • 字形
    描述字符的筆畫圖案或唯一的圖形化形狀雹食。
  • 編碼后的字符
    分配給字符的唯一數(shù)字編號畜普,這樣我們就可以操作它了。
  • 編碼空間
    計劃用于字符編碼的整數(shù)范圍群叶。
  • 編碼寬度
    每個(固定大小的)字符編碼所用的位數(shù)吃挑。
  • 字符集
    特定的工作字符集(全體字符的一個子集)。
  • 編碼后的字符集
    組成字符庫(從全球的字符中選出若干字符)的已編碼字符集街立,并為每個字符分配編碼空間的一個代碼舶衬。換句話說,它把數(shù)字化的字符代碼映射為實際的字符赎离。
  • 字符編碼方案
    把數(shù)字化的字符代碼編碼成一系列二進制碼(并能相應(yīng)地反向解碼)的算法逛犹。

各種編碼方案的歷史及編碼方式

計算機首先是在美國發(fā)明出來的,為了使美國常用的一些字符能在計算機中進行操作梁剔,他們就對美國現(xiàn)有的字符進行編碼虽画。首先出現(xiàn)的比較規(guī)范的編碼方案就是ASCII碼

ASCII碼

ASCII碼 (American Standard Code for Information Interchange荣病,美國信息交換標(biāo)準(zhǔn)代碼) 這種編碼方案采用一個字節(jié)表示一個字符码撰,一個字節(jié) 8bit
2^8 可以表示 256 個狀態(tài),但是其中只使用了 128 個狀態(tài)个盆,最高位始終為 0 脖岛。其中 0 ~ 31 表示控制字符,32 ~ 126 表示可顯示的字符砾省,127 表示刪除鸡岗。ASCII碼對照表。在美國這個字符編碼方案是夠用的编兄,但是隨著計算機的發(fā)展轩性,傳到了其他國家,其他國家的一些字符并沒有在這套編碼方案內(nèi)狠鸳,當(dāng)然也就無法顯示和控制了揣苏。人們就想起了剩下的那 128 個沒有使用的狀態(tài)對目前的 ASCII碼 進行擴展,這就是EASCII(Extended ASCII件舵,延伸美國標(biāo)準(zhǔn)信息交換碼)卸察。

EASCII碼

EASCII碼 有很多種,比較常見的有 CP437铅祸,ISO/IEC 8859系列 坑质。他共同特點就是前 128 位的狀態(tài)和 ASCII碼 是一樣的合武。而后面的則根據(jù)不同的國家對應(yīng)編不同的字符,這樣就解決了很多國家的字符編碼問題。但是到了亞洲大多采用表意文字涡扼,比如漢字多達幾千上萬的字符稼跳,這樣這套編碼方案就又不能適應(yīng)了。所以就又出現(xiàn)了其他的編碼方案吃沪,例如中文編碼方案 GB2312汤善、GBK 等等各種不同的編碼方案。下面以GB2312為例講解這類編碼方案票彪。

GB2312

由于漢字眾多红淡,單字節(jié)的狀態(tài)位已經(jīng)不夠用,所以中國人老實不客氣的在加一個字節(jié)這樣 2 個字節(jié) 16 位降铸,最多就可表示 2^16 = 65536 個狀態(tài)在旱。GB2312 是基于區(qū)位碼設(shè)計的,區(qū)位碼把編碼表分為 94 個區(qū)垮耳,每個區(qū)對應(yīng)
94 位颈渊,每個字符的區(qū)號和位號組合起來就是該漢字的區(qū)位碼。區(qū)位碼一般用十進制數(shù)來表示终佛,如 1601 就表示 16 區(qū) 1 位,對應(yīng)的字符是"啊"雾家。在區(qū)位碼的區(qū)號和位號上分別加上 0xA0 就得到了 GB2312 的編碼铃彰,比如字符"啊"的編碼就是 0xB0A1GB2312簡體中文編碼表芯咧。其中有很多的狀態(tài)位是沒有使用的牙捉,
GB2312 的編碼范圍是 0xA1A1~0xFEFE ,就算是這個編碼范圍內(nèi)的也有很多是沒有使用的敬飒。后來的 GBK邪铲、GB18030 等都是在此基礎(chǔ)上,又增添了其他的一些字符无拗,這里不做具體敘述带到。

Unicode

隨著越來越多的編碼方案出現(xiàn),相互之間的交流變得復(fù)雜起來英染。這時 Unicode出現(xiàn)了揽惹,Unicode字符表它把世界上所有的字符都對應(yīng)起來一個編碼。但 Unicode 僅僅只是一個字符集四康,它只規(guī)定了符號的二進制代碼搪搏,卻沒有規(guī)定這個二進制代碼應(yīng)該如何編碼存儲。后續(xù)對此字符集進行編碼闪金,提出了不同的編碼方案疯溺,其中有 UTF-8UTF-16UTF-32囱嫩。下面以 UTF-8 為例講解恃疯。

UTF-8

UTF-8(Unicode Transformation Format - 8)UTF-8 使用的是變寬編碼挠说,不像上面提到的澡谭,說是一個字節(jié)或兩個字節(jié)的長度,則所有的字符都是那么長损俭。
UTF-8 占用最小占用 1 個字節(jié)蛙奖,最大占用 6 個字節(jié)。編碼方式為:

字符代碼的二進制位 字節(jié)1 字節(jié)2 字節(jié)3 字節(jié)4 字節(jié)5 字節(jié)6
0~7 0xxxxxxx
8~11 110xxxxx 10xxxxxx
12~16 1110xxxx 10xxxxxx 10xxxxxx
17~21 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx
22~26 111110xx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx
27~31 1111110x 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx

舉例來說明一下杆兵,Unicode 中字符代碼 90(字符為" Z ") 的二進制碼為1011010 7位雁仲,這對應(yīng)的編碼就是一個字節(jié)長度,01011010琐脏。Unicode
中字符代碼 5073(字符" ? ") 的二進制碼為 1001111010001 13位 的則需要用三個字節(jié)攒砖。編碼后為11100001 10001111 10010001

總結(jié)

ASCII碼 這些日裙,既是字符集吹艇,又是編碼方案,而 Unicode 僅僅是一個字符集昂拂,并不是一個編碼方案受神。我們最常用的編碼方案就是 ASCII碼UTF-8。而大多數(shù)的編碼方案都是兼容 ASCII碼 的格侯。這里只是在眾多的編碼方案中鼻听,挑出幾種來介紹,如果對其他的一些編碼方案感興趣联四,可以自己再去查閱有關(guān)資料撑碴。這是一系列文章的其中一篇,你可以在這兒Encode & Decode集序找到他其他的兄弟朝墩。

參考

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末廉嚼,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子倒戏,更是在濱河造成了極大的恐慌怠噪,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,185評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件杜跷,死亡現(xiàn)場離奇詭異傍念,居然都是意外死亡矫夷,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,652評論 3 393
  • 文/潘曉璐 我一進店門憋槐,熙熙樓的掌柜王于貴愁眉苦臉地迎上來双藕,“玉大人,你說我怎么就攤上這事阳仔∮桥悖” “怎么了?”我有些...
    開封第一講書人閱讀 163,524評論 0 353
  • 文/不壞的土叔 我叫張陵近范,是天一觀的道長嘶摊。 經(jīng)常有香客問我,道長评矩,這世上最難降的妖魔是什么叶堆? 我笑而不...
    開封第一講書人閱讀 58,339評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮斥杜,結(jié)果婚禮上虱颗,老公的妹妹穿的比我還像新娘。我一直安慰自己蔗喂,他們只是感情好忘渔,可當(dāng)我...
    茶點故事閱讀 67,387評論 6 391
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著缰儿,像睡著了一般辨萍。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上返弹,一...
    開封第一講書人閱讀 51,287評論 1 301
  • 那天,我揣著相機與錄音爪飘,去河邊找鬼义起。 笑死,一個胖子當(dāng)著我的面吹牛师崎,可吹牛的內(nèi)容都是我干的默终。 我是一名探鬼主播,決...
    沈念sama閱讀 40,130評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼犁罩,長吁一口氣:“原來是場噩夢啊……” “哼齐蔽!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起床估,我...
    開封第一講書人閱讀 38,985評論 0 275
  • 序言:老撾萬榮一對情侶失蹤含滴,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后丐巫,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體谈况,經(jīng)...
    沈念sama閱讀 45,420評論 1 313
  • 正文 獨居荒郊野嶺守林人離奇死亡勺美,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,617評論 3 334
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了碑韵。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片赡茸。...
    茶點故事閱讀 39,779評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖祝闻,靈堂內(nèi)的尸體忽然破棺而出占卧,到底是詐尸還是另有隱情,我是刑警寧澤联喘,帶...
    沈念sama閱讀 35,477評論 5 345
  • 正文 年R本政府宣布华蜒,位于F島的核電站,受9級特大地震影響耸袜,放射性物質(zhì)發(fā)生泄漏友多。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,088評論 3 328
  • 文/蒙蒙 一堤框、第九天 我趴在偏房一處隱蔽的房頂上張望域滥。 院中可真熱鬧,春花似錦蜈抓、人聲如沸启绰。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,716評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽委可。三九已至,卻和暖如春腊嗡,著一層夾襖步出監(jiān)牢的瞬間着倾,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,857評論 1 269
  • 我被黑心中介騙來泰國打工燕少, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留卡者,地道東北人。 一個月前我還...
    沈念sama閱讀 47,876評論 2 370
  • 正文 我出身青樓客们,卻偏偏與公主長得像崇决,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子底挫,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,700評論 2 354

推薦閱讀更多精彩內(nèi)容

  • 0 前言 在平時的開發(fā)過程中大部分人應(yīng)該都遇到過中文亂碼問題恒傻,瀏覽網(wǎng)頁時也會遇到內(nèi)容顯示亂碼的情況,一般遇到這種情...
    小豬啊嗚閱讀 2,573評論 1 10
  • 在北京建邓,參加云教育為主題的云思維研討會盈厘。什么是云教育呢?稍微總結(jié)了一下涝缝,明天繼續(xù)扑庞。 全才版云教育概念:云教育是用各...
    真靈閱讀 450評論 0 0
  • 我好久都沒有做夢了。 好久栅隐,至少八九個月塔嬉。 來深圳之后,就沒有做過夢租悄。永遠燥熱的溫度谨究,無論冬夏;永遠吵鬧的鄰居泣棋,無...
    芳寶落落閱讀 264評論 0 2