成就夢(mèng)想

            BlogJava :: 首頁(yè) :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
            21 隨筆 :: 22 文章 :: 6 評(píng)論 :: 0 Trackbacks
           

          很久很久以前,有一群人,他們決定用8個(gè)可以開(kāi)合的晶體管來(lái)組合成不同的狀態(tài),以表示世界上的萬(wàn)物。他們看到8個(gè)開(kāi)關(guān)狀態(tài)是好的,于是他們把這稱(chēng)為"字節(jié)"。

          再后來(lái),他們又做了一些可以處理這些字節(jié)的機(jī)器,機(jī)器開(kāi)動(dòng)了,可以用字節(jié)來(lái)組合出很多狀態(tài),狀態(tài)開(kāi)始變來(lái)變?nèi)ァK麄兛吹竭@樣是好的,于是它們就這機(jī)器稱(chēng)為"計(jì)算機(jī)"。



          開(kāi)始計(jì)算機(jī)只在美國(guó)用。八位的字節(jié)一共可以組合出256(2的8次方)種不同的狀態(tài)。

          他們把其中的編號(hào)從0開(kāi)始的32種狀態(tài)分別規(guī)定了特殊的用途,一但終端、打印機(jī)遇上約定好的這些字節(jié)被傳過(guò)來(lái)時(shí),就要做一些約定的動(dòng)作。遇上 00x10, 終端就換行,遇上0x07, 終端就向人們嘟嘟叫,例好遇上0x1b, 打印機(jī)就打印反白的字,或者終端就用彩色顯示字母。他們看到這樣很好,于是就把這些0x20以下的字節(jié)狀態(tài)稱(chēng)為"控制碼"。 

          他們又把所有的空格、標(biāo)點(diǎn)符號(hào)、數(shù)字、大小寫(xiě)字母分別用連續(xù)的字節(jié)狀態(tài)表示,一直編到了第127號(hào),這樣計(jì)算機(jī)就可以用不同字節(jié)來(lái)存儲(chǔ)英語(yǔ)的文字 了。大家看到這樣,都感覺(jué)很好,于是大家都把這個(gè)方案叫做 ANSI 的"Ascii"編碼(American Standard Code for Information Interchange,美國(guó)信息互換標(biāo)準(zhǔn)代碼)。當(dāng)時(shí)世界上所有的計(jì)算機(jī)都用同樣的ASCII方案來(lái)保存英文文字。

          后來(lái),就像建造巴比倫塔一樣,世界各地的都開(kāi)始使用計(jì)算機(jī),但是很多國(guó)家用的不是英文,他們的字母里有許多是ASCII里沒(méi)有的,為了可以在計(jì)算 機(jī)保存他們的文字,他們決定采用127號(hào)之后的空位來(lái)表示這些新的字母、符號(hào),還加入了很多畫(huà)表格時(shí)需要用下到的橫線、豎線、交叉等形狀,一直把序號(hào)編到 了最后一個(gè)狀態(tài)255。從128到255這一頁(yè)的字符集被稱(chēng)"擴(kuò)展字符集"。從此之后,貪婪的人類(lèi)再?zèng)]有新的狀態(tài)可以用了,美帝國(guó)主義可能沒(méi)有想到還有第 三世界國(guó)家的人們也希望可以用到計(jì)算機(jī)吧! 

          等中國(guó)人們得到計(jì)算機(jī)時(shí),已經(jīng)沒(méi)有可以利用的字節(jié)狀態(tài)來(lái)表示漢字,況且有6000多個(gè)常用漢字需要保存呢。但是這難不倒智慧的中國(guó)人民,我們不客 氣地把那些127號(hào)之后的奇異符號(hào)們直接取消掉, 規(guī)定:一個(gè)小于127的字符的意義與原來(lái)相同,但兩個(gè)大于127的字符連在一起時(shí),就表示一個(gè)漢字,前面的一個(gè)字節(jié)(他稱(chēng)之為高字節(jié))從0xA1用到 0xF7,后面一個(gè)字節(jié)(低字節(jié))從0xA1到0xFE,這樣我們就可以組合出大約7000多個(gè)簡(jiǎn)體漢字了。在這些編碼里,我們還把數(shù)學(xué)符號(hào)、羅馬希臘的 字母、日文的假名們都編進(jìn)去了,連在 ASCII 里本來(lái)就有的數(shù)字、標(biāo)點(diǎn)、字母都統(tǒng)統(tǒng)重新編了兩個(gè)字節(jié)長(zhǎng)的編碼,這就是常說(shuō)的"全角"字符,而原來(lái)在127號(hào)以下的那些就叫"半角"字符了。 

          中國(guó)人民看到這樣很不錯(cuò),于是就把這種漢字方案叫做 "GB2312"。GB2312 是對(duì) ASCII 的中文擴(kuò)展。

          但是中國(guó)的漢字太多了,我們很快就就發(fā)現(xiàn)有許多人的人名沒(méi)有辦法在這里打出來(lái),特別是某些很會(huì)麻煩別人的國(guó)家領(lǐng)導(dǎo)人。于是我們不得不繼續(xù)把 GB2312 沒(méi)有用到的碼位找出來(lái)老實(shí)不客氣地用上。

          后來(lái)還是不夠用,于是干脆不再要求低字節(jié)一定是127號(hào)之后的內(nèi)碼,只要第一個(gè)字節(jié)是大于127就固定表示這是一個(gè)漢字的開(kāi)始,不管后面跟的是不 是擴(kuò)展字符集里的內(nèi)容。結(jié)果擴(kuò)展之后的編碼方案被稱(chēng)為 GBK 標(biāo)準(zhǔn),GBK 包括了 GB2312 的所有內(nèi)容,同時(shí)又增加了近20000個(gè)新的漢字(包括繁體字)和符號(hào)。 

          后來(lái)少數(shù)民族也要用電腦了,于是我們?cè)贁U(kuò)展,又加了幾千個(gè)新的少數(shù)民族的字,GBK 擴(kuò)成了 GB18030。從此之后,中華民族的文化就可以在計(jì)算機(jī)時(shí)代中傳承了。

          中國(guó)的程序員們看到這一系列漢字編碼的標(biāo)準(zhǔn)是好的,于是通稱(chēng)他們叫做 "DBCS"(Double Byte Charecter Set 雙字節(jié)字符集)。在DBCS系列標(biāo)準(zhǔn)里,最大的特點(diǎn)是兩字節(jié)長(zhǎng)的漢字字符和一字節(jié)長(zhǎng)的英文字符并存于同一套編碼方案里,因此他們寫(xiě)的程序?yàn)榱酥С种形奶?理,必須要注意字串里的每一個(gè)字節(jié)的值,如果這個(gè)值是大于127的,那么就認(rèn)為一個(gè)雙字節(jié)字符集里的字符出現(xiàn)了。那時(shí)候凡是受過(guò)加持,會(huì)編程的計(jì)算機(jī)僧侶 們都要每天念下面這個(gè)咒語(yǔ)數(shù)百遍: 

          "一個(gè)漢字算兩個(gè)英文字符!一個(gè)漢字算兩個(gè)英文字符......"



          因?yàn)楫?dāng)時(shí)各個(gè)國(guó)家都像中國(guó)這樣搞出一套自己的編碼標(biāo)準(zhǔn),結(jié)果互相之間誰(shuí)也不懂誰(shuí)的編碼,誰(shuí)也不支持別人的編碼,連大陸和臺(tái)灣這樣只相隔了150海 里,使用著同一種語(yǔ)言的兄弟地區(qū),也分別采用了不同的 DBCS 編碼方案。當(dāng)時(shí)的中國(guó)人想讓電腦顯示漢字,就必須裝上一個(gè)"漢字系統(tǒng)",專(zhuān)門(mén)用來(lái)處理漢字的顯示、輸入的問(wèn)題,但是那個(gè)臺(tái)灣的愚昧封建人士寫(xiě)的算命程序就 必須加裝另一套支持 BIG5 編碼的什么"倚天漢字系統(tǒng)"才可以用,裝錯(cuò)了字符系統(tǒng),顯示就會(huì)亂了套!這怎么辦?而且世界民族之林中還有那些一時(shí)用不上電腦的窮苦人民,他們的文字又怎 么辦?

          真是計(jì)算機(jī)的巴比倫塔命題啊!

          正在這時(shí),大天使加百列及時(shí)出現(xiàn)了:一個(gè)叫 ISO (國(guó)際標(biāo)誰(shuí)化組織)的國(guó)際組織決定著手解決這個(gè)問(wèn)題。他們采用的方法很簡(jiǎn)單:廢了所有的地區(qū)性編碼方案,重新搞一個(gè)包括了地球上所有文化、所有字母和符號(hào) 的編碼!他們打算叫它"Universal Multiple-Octet Coded Character Set",簡(jiǎn)稱(chēng) UCS, 俗稱(chēng) "UNICODE"。


          轉(zhuǎn)自 http://www.iteye.com/topic/351135


          posted on 2012-04-17 20:58 iamct 閱讀(1058) 評(píng)論(3)  編輯  收藏 所屬分類(lèi): 基礎(chǔ)知識(shí)

          評(píng)論

          # re: 編碼的歷史【轉(zhuǎn)】[未登錄](méi) 2014-10-24 16:32 XXX
          XXXXXxx  回復(fù)  更多評(píng)論
            

          # re: 編碼的歷史【轉(zhuǎn)】[未登錄](méi) 2014-10-24 16:34 XXX
          無(wú)聊!!!!!!  回復(fù)  更多評(píng)論
            

          # :) 2014-10-24 16:37 :(
          :()  回復(fù)  更多評(píng)論
            


          只有注冊(cè)用戶(hù)登錄后才能發(fā)表評(píng)論。


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 依兰县| 亚东县| 宝丰县| 麟游县| 黔西| 沾益县| 五常市| 冷水江市| 平利县| 永康市| 洞口县| 犍为县| 五常市| 牡丹江市| 兴文县| 周口市| 东兰县| 德保县| 巫溪县| 和平县| 五指山市| 绥宁县| 义乌市| 泰来县| 临汾市| 彝良县| 醴陵市| 康平县| 大荔县| 兰溪市| 西和县| 河池市| 清河县| 博爱县| 蓬溪县| 万全县| 龙泉市| 凤冈县| 吉隆县| 滦南县| 丰镇市|