淺談什么是字符編碼

計(jì)算機(jī)是如何存儲(chǔ)數(shù)據(jù)的

在談什么是字符編碼前,我們首先要知道一個(gè)概念,計(jì)算機(jī)是如何存儲(chǔ)數(shù)據(jù)的:
計(jì)算機(jī)是由邏輯電路組成,僅能識(shí)別二進(jìn)制的電脈沖信號(hào)粱坤,二進(jìn)制位的狀態(tài)用0和1表示。計(jì)算機(jī)中最小的存儲(chǔ)單位為一個(gè)比特瓷产,存放一個(gè)二進(jìn)制數(shù)站玄,八個(gè)比特組成一個(gè)字節(jié)。那么我們?nèi)绾螌⑷粘V惺褂玫奈淖峙c符號(hào)轉(zhuǎn)換為計(jì)算機(jī)能夠識(shí)別的二進(jìn)制數(shù)呢濒旦,這就用到了字符編碼株旷。

字符編碼的定義

字符編碼,首先看維基百科中的定義:

字符編碼(英語(yǔ):Character encoding)尔邓、字集碼:是把字符集中的字符編碼為指定集合中某一對(duì)象(例如:比特模式晾剖、自然數(shù)序列、8位組或者電脈沖)梯嗽,以便文本在計(jì)算機(jī)中存儲(chǔ)和通過通信網(wǎng)絡(luò)的傳遞齿尽。

簡(jiǎn)單來說,在計(jì)算機(jī)科學(xué)中灯节,字符編碼就是一種編碼規(guī)則循头,可以將字符集(某種包含了各種字符與文字的集合)中的字符轉(zhuǎn)換為計(jì)算機(jī)能夠識(shí)別的二進(jìn)制代碼。

常見的字符編碼介紹

目前被我們大眾所熟知的字符編碼有以下幾種:

  1. ASCII碼
    ASCII炎疆,全稱:American Standard Code for Information Interchange(美國(guó)信息交換標(biāo)準(zhǔn)代碼)卡骂,是基于拉丁字母的一套編碼系統(tǒng),由電報(bào)代碼發(fā)展而來磷雇,主要用于顯示現(xiàn)代英語(yǔ)。ASCII碼標(biāo)準(zhǔn)由美國(guó)國(guó)家標(biāo)準(zhǔn)學(xué)會(huì)制定躏救,最近一次更新于1986年唯笙。目前,ASCII碼共規(guī)定了128個(gè)字符的編碼盒使,占用了一個(gè)字節(jié)的后七位崩掘,第一位統(tǒng)一規(guī)定為0。其中包含了英文的大小寫字母少办、數(shù)字苞慢、標(biāo)點(diǎn)符號(hào)等常用的字符。
    e.g. 大寫字母A在ASCII碼中對(duì)應(yīng)65英妓,二進(jìn)制碼為:01000001挽放。

  2. **ISO 8859 **
    ASCII碼的誕生绍赛,幫助美國(guó)人解決了字符在計(jì)算機(jī)中的存儲(chǔ)問題,但其他一些不使用英文的國(guó)家辑畦,就無法使用ASCII碼吗蚌。為此,各國(guó)專家紛紛借鑒ASCII的設(shè)計(jì)理念纯出,編制了許多用 8 位二進(jìn)制數(shù)來表示字符的擴(kuò)充字符集蚯妇。為了統(tǒng)一各國(guó)各語(yǔ)言的單獨(dú)編碼的混亂局面,國(guó)際標(biāo)準(zhǔn)化組織(ISO)及國(guó)際電工委員會(huì)(IEC)聯(lián)合制定了一系列8位元字符集的標(biāo)準(zhǔn)暂筝,ISO 8859(全稱ISO/IEC 8859)箩言。ISO 8859的前七位完全兼容 ASCII,編號(hào)128 – 159 共32個(gè)編碼保留給擴(kuò)充定義的 32 個(gè)擴(kuò)充控制碼焕襟,160 為不換行空格陨收,161 - 255的95個(gè)數(shù)字用于新增加的字符代碼。目前胧洒,ISO 8859共定義了15個(gè)字符集畏吓。

  3. **GB 2312/GBK/GB 18030 **
    ISO8859解決了大多數(shù)的西方國(guó)家的編碼問題,接下來還需要解決中國(guó)的編碼問題卫漫。1980年菲饼,中國(guó)國(guó)家標(biāo)準(zhǔn)總局發(fā)布了GB 2312(或 GB 2312–80,全稱:中華人民共和國(guó)國(guó)家標(biāo)準(zhǔn)簡(jiǎn)體中文字符集)列赎,并于1981年5月1日正式實(shí)施宏悦。GB 2312中,每個(gè)漢字及符號(hào)以兩個(gè)字節(jié)來表示包吝。第一個(gè)字節(jié)稱為“高位字節(jié)”饼煞,第二個(gè)字節(jié)稱為“低位字節(jié)”。GB 2312標(biāo)準(zhǔn)共收錄6763個(gè)漢字诗越,其中一級(jí)漢字3755個(gè)砖瞧,二級(jí)漢字3008個(gè);同時(shí)收錄了包括拉丁字母嚷狞、希臘字母块促、日文平假名及片假名字母、俄語(yǔ)西里爾字母在內(nèi)的682個(gè)字符床未。
    GB 2312的出現(xiàn)基本滿足了漢字的計(jì)算機(jī)處理需求竭翠,但是對(duì)于一些生僻字、在GB 2312標(biāo)準(zhǔn)發(fā)布后才推出的簡(jiǎn)化字薇搁、臺(tái)灣及香港使用的繁體字斋扰,日語(yǔ)及朝鮮語(yǔ)漢字等,GB 2312未收錄其中。于是微軟利用了GB 2312-80未使用的編碼空間传货,收錄了GB 13000.1-93的全部字符屎鳍,制定了GBK編碼,GBK編碼向下兼容GB 2312损离。
    2000年3月17日哥艇,中華人民共和國(guó)國(guó)家質(zhì)量技術(shù)監(jiān)督局又推出了GB 18030-2000標(biāo)準(zhǔn),以取代GBK僻澎,但是將GBK作為子集完全保留∶蔡ぃ現(xiàn)行GB 18030版本由國(guó)家質(zhì)量監(jiān)督檢驗(yàn)總局和中國(guó)國(guó)家標(biāo)準(zhǔn)化管理委員會(huì)于2005年11月8日發(fā)布,2006年5月1日正式實(shí)施窟勃,全稱:國(guó)家標(biāo)準(zhǔn)GB 18030-2005《信息技術(shù) 中文編碼字符集》祖乳,共收錄漢字70,244個(gè)。

  4. **Unicode **
    上述的各種編碼系統(tǒng)秉氧,在各個(gè)國(guó)家內(nèi)部都得到了廣泛的運(yùn)用眷昆,但是在不同的國(guó)家之間使用時(shí)就容易出現(xiàn)不兼容的情況。這就需要一個(gè)統(tǒng)一的編碼系統(tǒng)來解決這個(gè)兼容問題汁咏,于是就出現(xiàn)了Unicode(統(tǒng)一碼)亚斋。
    Unicode編碼系統(tǒng)可分為編碼方式和實(shí)現(xiàn)方式兩個(gè)層次。Unicode碼的編碼方式與ISO制定的ISO 10646標(biāo)準(zhǔn)所定義的通用字符集(UCS)概念相對(duì)應(yīng)攘滩,UCS包含了已知語(yǔ)言的所有字符帅刊。Unicode的實(shí)現(xiàn)方式不同于編碼方式。一個(gè)字符的Unicode編碼是確定的漂问。但出于對(duì)于不同系統(tǒng)平臺(tái)設(shè)計(jì)的適用需求及節(jié)省空間的需求赖瞒,Unicode編碼存在多種實(shí)現(xiàn)方式,這些實(shí)現(xiàn)方式稱為Unicode轉(zhuǎn)換格式(Unicode Transformation Format蚤假,簡(jiǎn)稱為UTF)栏饮。
    目前,UTF-8是在互聯(lián)網(wǎng)上使用最為廣泛的一種Unicode實(shí)現(xiàn)方式磷仰,其他還有UTF-16袍嬉、UTF-32。UTF-8最大的特點(diǎn)是灶平,它是一種變長(zhǎng)的編碼方式伺通,可以用1~4個(gè)字節(jié)表示一個(gè)符號(hào)。
    UTF的編碼規(guī)則民逼,大致可概括如下:

Unicode范圍(十六進(jìn)制) UTF編碼 (二進(jìn)制)
0000 0000 - 0000 007F 0xxxxxxx
0000 0080 - 0000 07FF 110xxxxx 10xxxxxx
0000 0800 - 0000 FFFF 1110xxxx 10xxxxxx 10xxxxxx
0001 0000 - 0010 FFFF 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx
  • 對(duì)于單字節(jié)的符號(hào)泵殴,UTF編碼的第一位為0涮帘,后七位與Unicode編碼一致拼苍,與ASCII碼兼容。
  • 對(duì)于多字節(jié)的符號(hào),假設(shè)有n個(gè)字節(jié)疮鲫,則第一個(gè)字節(jié)的前n位均為1吆你,第n+1位為0,后n-1個(gè)字節(jié)的前兩位均為10俊犯,其余的xxx均為Unicode碼妇多。

參考

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市燕侠,隨后出現(xiàn)的幾起案子者祖,更是在濱河造成了極大的恐慌,老刑警劉巖绢彤,帶你破解...
    沈念sama閱讀 221,820評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件七问,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡茫舶,警方通過查閱死者的電腦和手機(jī)械巡,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,648評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來饶氏,“玉大人讥耗,你說我怎么就攤上這事≌钇簦” “怎么了古程?”我有些...
    開封第一講書人閱讀 168,324評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)皮仁。 經(jīng)常有香客問我籍琳,道長(zhǎng),這世上最難降的妖魔是什么贷祈? 我笑而不...
    開封第一講書人閱讀 59,714評(píng)論 1 297
  • 正文 為了忘掉前任趋急,我火速辦了婚禮,結(jié)果婚禮上势誊,老公的妹妹穿的比我還像新娘呜达。我一直安慰自己,他們只是感情好粟耻,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,724評(píng)論 6 397
  • 文/花漫 我一把揭開白布查近。 她就那樣靜靜地躺著,像睡著了一般挤忙。 火紅的嫁衣襯著肌膚如雪霜威。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,328評(píng)論 1 310
  • 那天册烈,我揣著相機(jī)與錄音戈泼,去河邊找鬼。 笑死,一個(gè)胖子當(dāng)著我的面吹牛大猛,可吹牛的內(nèi)容都是我干的扭倾。 我是一名探鬼主播,決...
    沈念sama閱讀 40,897評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼挽绩,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼膛壹!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起唉堪,我...
    開封第一講書人閱讀 39,804評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤模聋,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后唠亚,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體撬槽,經(jīng)...
    沈念sama閱讀 46,345評(píng)論 1 318
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,431評(píng)論 3 340
  • 正文 我和宋清朗相戀三年趾撵,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了侄柔。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,561評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡占调,死狀恐怖暂题,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情究珊,我是刑警寧澤薪者,帶...
    沈念sama閱讀 36,238評(píng)論 5 350
  • 正文 年R本政府宣布,位于F島的核電站剿涮,受9級(jí)特大地震影響言津,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜取试,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,928評(píng)論 3 334
  • 文/蒙蒙 一悬槽、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧瞬浓,春花似錦初婆、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,417評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至萨赁,卻和暖如春弊琴,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背杖爽。 一陣腳步聲響...
    開封第一講書人閱讀 33,528評(píng)論 1 272
  • 我被黑心中介騙來泰國(guó)打工敲董, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留详瑞,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,983評(píng)論 3 376
  • 正文 我出身青樓臣缀,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親泻帮。 傳聞我的和親對(duì)象是個(gè)殘疾皇子精置,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,573評(píng)論 2 359

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

  • 在說常見的字符編碼(ASCII、gb2312锣杂、gbk脂倦、utf-8等)之前,我們先來看看編碼的歷史吧元莫。 編碼編年史 ...
    craneyuan閱讀 874評(píng)論 4 4
  • 編碼問題一直困擾著開發(fā)人員赖阻,尤其在 Java 中更加明顯,因?yàn)?Java 是跨平臺(tái)語(yǔ)言踱蠢,不同平臺(tái)之間編碼之間的切換...
    x360閱讀 2,482評(píng)論 1 20
  • 人生在世火欧,你須害怕生死【ソ兀恐懼使人心懷敬畏苇侵,謹(jǐn)慎前行,不至在困境中迷失企锌,過于消極地放縱而選擇最壞的一種放棄榆浓。 同時(shí),...
    隼弋閱讀 197評(píng)論 0 0
  • 引言 2017年9月17日撕攒,是37屆北京馬拉松開賽的日子陡鹃。經(jīng)過前期周密準(zhǔn)備,我成功中簽2017北京馬拉松抖坪。 關(guān)于中...
    童_剛閱讀 1,277評(píng)論 2 4
  • P120-141 效率的本質(zhì)就是學(xué)習(xí)萍鲸,只有擁有更多的技能,才能踏入更多未知的世界擦俐,接觸更多的是猿推,更多的圈子,體會(huì)更...
    圊韻閱讀 128評(píng)論 0 0