字符編碼及矢量字體_圖文_第1頁
字符編碼及矢量字體_圖文_第2頁
字符編碼及矢量字體_圖文_第3頁
字符編碼及矢量字體_圖文_第4頁
字符編碼及矢量字體_圖文_第5頁
已閱讀5頁,還剩18頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、 2字符編碼及矢量字體 3大 綱 ¾字符編碼發(fā)展概述 ¾國標(biāo)碼¾內(nèi)碼介紹¾Unicode碼介紹 ¾Codepage介紹¾字符顯示與字庫 ¾矢量字體的應(yīng)用 ¾多國語開發(fā) 4字符編碼發(fā)展概述 5 字符編碼發(fā)展概述9、將一個整數(shù) 10002 存到磁盤上,以 ASCII碼 形式存儲和以 二進(jìn)制 形式存儲, 占用的字節(jié)數(shù)分別是 。A. 2和2B. 2和5C. 5和2D. 5和5 7 字符編碼發(fā)展概述¾20世紀(jì)六十年代中期,計算機(jī)不在只是完成數(shù) 值計算,他將肩負(fù)起更重大的使命。在當(dāng)時, 有人突發(fā)奇想,8位二進(jìn)制(即8

2、個開關(guān)能組合 出不同的狀態(tài),可否用以表示世間萬物,這8個開關(guān)狀態(tài)后來稱為 “ 字節(jié) ” 標(biāo)志著計算機(jī) 字符處理的開始。¾計算機(jī)最早在美國開始使用,為了將他們生活 中用到的各種文字和符號,能夠通過計算機(jī)進(jìn) 行存儲、顯示、傳輸和共享,他們開始思考! 8個開關(guān)能組合出多少種不同的狀態(tài)呢? 8 字符編碼發(fā)展概述¾一個字節(jié)能組合出:28=256種不同 的狀態(tài)¾即字符編碼從這個時候開發(fā)始了! 9 字符編碼發(fā)展概述¾一開始他們將一些打印機(jī)控制符、空格、標(biāo)點符 號、數(shù)字和大小寫字母分別用連續(xù)的編號進(jìn)行表 示,一直編到了第127號¾這樣計算機(jī)就可以用不同字節(jié)來存

3、儲英文文字以 及各種符號了,并為這個方案取了個名稱叫: ANSI 的 “ ASCII ” 編碼(American Standard Code for Information Interchange,美國信息互換 標(biāo)準(zhǔn)代碼,于1967年定案¾當(dāng)時,世界上所有的計算機(jī)都使用同樣的ASCII 碼方案來保存英文文字和各種常用符號 10 字符編碼發(fā)展概述¾ASCII碼包含的內(nèi)容:¾0-31共32種狀態(tài)分配給了打印機(jī)等設(shè)備, 做為控制符¾所以0x20以前的字節(jié)狀態(tài)又稱為 “ 控制碼 ” 或 不可顯示編碼¾包含0x20以后到0x80的字節(jié)狀態(tài)用于表示 數(shù)字字

4、母以及常用的符號¾下表是ASCII碼表的分配情況(又叫ASCII碼 基本字符集: 12 字符編碼發(fā)展概述¾擴(kuò)展字符集¾隨著計算機(jī)技術(shù)的發(fā)展和應(yīng)用普及,世界 各地都開始了使用計算機(jī),但是很多國家 用的不是英文,他們的字母里有很多是 ASCII碼字符集中沒有的,為了可以在計算 機(jī)中保存這些非英文國家的文字和符號 ¾人們決定采用127號之后未編排的空位來表 示這些新的字母、符號,并且還加入了很 多畫表格時需要用到的橫線、豎線、以及 交叉線等形狀,一直把序號編到了最后一 個狀態(tài)255。從128到255這一頁的字符集被 稱為"擴(kuò)展字符集" 13

5、 字符編碼發(fā)展概述¾ASCII碼擴(kuò)展字符集: 14 字符編碼發(fā)展概述¾計算機(jī)來到中國¾等計算機(jī)到達(dá)中國時,一個字節(jié)的所有狀態(tài)已 經(jīng)被用完,沒有了可以利用的字節(jié)狀態(tài)來表示 漢字¾后來為了表示六千多個常用的漢字,智慧的國 人,毫不客氣地把那些127號狀態(tài)之后的奇異 符號直接廢除掉(大多國家也都是這么做的 ¾并規(guī)定:一個小于127的字符的意義與原來相 同,但兩個大于127的字符連在一起時,就表 示一個漢字,前面的一個字節(jié)(高字節(jié)從 0xA1用到0xFE,后面一個字節(jié)(低字節(jié)從 0xA0到0xF0,這樣我們就可以組合出大約7000多個簡體漢字了。 15

6、字符編碼發(fā)展概述 ¾在這些編碼里,我們還把數(shù)學(xué)符號、羅馬希臘 字母、日文的假名都編碼進(jìn)去了,連在 ASCII 里本來就有的數(shù)字、標(biāo)點、字母都統(tǒng)統(tǒng)重新編 了兩個字節(jié)長的編碼,即 “ 全角 ” 字符,而原來 在127號之前的那些字符稱為 “ 半角 ” 字符¾至此,我們還為這種漢字編碼方案取了一個代 號叫做 “ GB2312” 。GB2312 是對ASCII編碼字 符集的簡體中文擴(kuò)展 16 字符編碼發(fā)展概述¾ANSI編碼¾由于不同的國家和地區(qū)都制定了不同的標(biāo)準(zhǔn), 由此產(chǎn)生了 GB2312, BIG5, JIS 等各自的編 碼標(biāo)準(zhǔn)。這些使用一個或多個字節(jié)來代表一

7、個 字符的各種延伸編碼方式,都與ASCII碼一樣 被稱為 ANSI編碼(美國國家標(biāo)準(zhǔn)學(xué)會¾在簡體中文系統(tǒng)下,ANSI編碼可以代表GB2312或GBK編碼等,在日文操作系統(tǒng)下,ANSI編碼 代表JIS編碼¾不同ANSI編碼之間互不兼容,當(dāng)信息在國際之 間交流時,無法將屬于兩種語言的文字,存儲 在同一段ANSI編碼的文件中 17國標(biāo)碼 18 國標(biāo)碼¾GB2312編碼¾GB2312編碼全稱信息交換用漢字編碼字符 集 基本集,由國家標(biāo)準(zhǔn)總局1980年發(fā) 布,1981年5月1日實施,通行于大陸。新加坡、 少數(shù)馬來西亞和文萊等地也使用此編碼。 ¾GB231

8、2或GB2312-80是一個簡體中文字符集, 共收入漢字6763個和非漢字圖形字符682個。 整個字符集分成94個區(qū),每區(qū)有94個位,即94個字符(二維表。每個區(qū)位表示一個字符,因 此可用所在的區(qū)位組合來對漢字進(jìn)行編碼,稱 為 區(qū)位碼 19 國標(biāo)碼¾分區(qū)處理(94x94¾01-09區(qū)為特殊全角符號共682個¾16-55區(qū)為一級漢字共3755個,按音序排列 ¾56-87區(qū)為二級漢字共3008個,按部首/筆 畫排序¾10-15區(qū)和88-94區(qū)共13個區(qū)暫未編碼。 ¾ 20 國標(biāo)碼¾GB2312編碼形式¾由于GB2312

9、是將字符編碼劃分成區(qū)位進(jìn)行管 理的,所以區(qū)號:1-94,位號:1-94,如第 一個漢字 “ 啊 ” 是在第16區(qū)第1位上,即(1601¾由此,區(qū)和位就順理成章的成了字符編碼的 高字節(jié)和底字節(jié),但為了編碼兼容ASCII碼且 機(jī)內(nèi)存儲不與ASCII碼沖突,所以GB2312并不 是直接使用0x0101-0x5E5E(區(qū)位碼對字符進(jìn) 行表示和存儲¾GB2312編碼是由高低字節(jié)分別加上128個 ASCII碼(80H并預(yù)留了32個(20H碼位得到的 21國標(biāo)碼¾GB2312編碼范圍是0xA1A0-0xFEF0,所以 GB2312與區(qū)位碼之間的轉(zhuǎn)換就是加減 0xA0A0即可,如

10、第一個 “ 啊 ” 字在GB2312中的 位置是0xB0A1=0x1001+0xA0A0¾GB2312作為早期國標(biāo)碼中的一種,大多數(shù) 計算機(jī)系統(tǒng)機(jī)內(nèi)碼都支持GB2312¾ 22 國標(biāo)碼¾GBK編碼¾隨著計算機(jī)使用范圍的擴(kuò)大,發(fā)現(xiàn)很多的 人名在GB2312編碼中找不到,還有很多文 字和符號將來可能還會有用到,于是1995年又做了一次大膽升級¾規(guī)定只要高字節(jié)超過127(0x80就認(rèn)為是雙 字節(jié)編碼,而不管低字節(jié)是否低于127(0x80,這種擴(kuò)展之后的編碼方案叫GBK 編碼(漢字內(nèi)碼擴(kuò)展方案¾GBK包括了GB2312的所有內(nèi)容,同時又增加

11、了近20000個新的漢字(包括繁體字、符 號和后來簡化的簡體漢字 23國標(biāo)碼¾GBK編碼¾GBK工作小組于1995年12月完成GBK規(guī)范。 該編碼標(biāo)準(zhǔn)兼容GB2312,共收錄漢字21003個、符號883個,并提供1894個造字碼位, 集簡體、繁體字融于一庫。¾由于GBK同時涵蓋了Unicode所有CJK漢字 (漢字20902,符號883,所以也可以和 Unicode做一一對應(yīng)¾ 24 國標(biāo)碼¾GBK編碼形式¾GBK編碼分為五段:GBK/1:GB2312非漢字符號區(qū)(0xA1A0 -0xA9EFGBK/2:GB2312漢字區(qū)(0xB0A

12、0 -0xF7FEGBK/3:GBK擴(kuò)充CJK漢字區(qū)6080個(0x8140 -xA0FEGBK/4:GBK擴(kuò)充CJK和增補漢字區(qū)共8160個(0xAA40 -FEA0 GBK/5:GBK擴(kuò)充非漢字符號區(qū)(0xA840 -0xA996 25 國標(biāo)碼¾GB18030編碼¾當(dāng)計算機(jī)發(fā)展到少數(shù)民族和一些偏遠(yuǎn)地方 后,我們做了再次擴(kuò)展,即GB18030¾至此,中華民族的文化就可以在計算機(jī)時 代中得以傳承¾GB18030-2000收錄了27533個漢字, GB18030-2005收錄了70244個漢字。 GB18030的總編碼空間約160萬個碼位 ¾GB

13、18030兼容GB2312和GBK,是我國非常重要 的漢字編碼標(biāo)準(zhǔn),也是我國計算機(jī)系統(tǒng)必 須遵循的基礎(chǔ)性標(biāo)準(zhǔn)之一 26 國標(biāo)碼¾GB18030編碼形式:本標(biāo)準(zhǔn)收錄的字符分別以單字節(jié)、雙字 節(jié)和四字節(jié)編碼¾GB18030-2000單字節(jié)部分:收錄了0x00到0x7F全部128個ASCII字符 及單字節(jié)編碼的歐元符號¾GB18030-2000雙字節(jié)部分:¾0xB0A0-0xF7FE:收錄6763個漢字(GB2312¾0x8140-0xA0FE:收錄6080個漢字(GBK 27國標(biāo)碼¾GB18030-2000雙字節(jié)部分:¾0xAA

14、40-0xFEA0:收錄8160個漢字(GBK¾GB18030-2000四字節(jié)部分:¾0x81308130-0x8239FE39:收錄6530個CJK統(tǒng) 一漢字?jǐn)U充A¾GB18030-2000共收錄漢字:¾27533 = 6763+6080+8160+6530¾GB18030-2005是在2000的基礎(chǔ)上做了一 次四字節(jié)部分的擴(kuò)展: 28國標(biāo)碼¾0x95308130-0x9839FE39:收錄42711個CJK 統(tǒng)一漢字?jǐn)U充B¾GB18030-2005共收錄漢字:¾70244 = 6763+6080+8160+65

15、30+42711¾¾GB18030碼位結(jié)構(gòu): 29國標(biāo)碼¾其它國標(biāo)碼:¾GB7589-87¾GB11383-1989¾GB12345-90¾GB13000-1993¾GB15564-1995¾GB16500-1998¾BIG5:又叫大五碼(由宏基、神通、佳佳、零壹、 大眾創(chuàng)立,誕生于1984年,普及于我國的臺灣、 香港、與澳門等繁體中文通行區(qū),共收錄13060個 中文漢字 30內(nèi)碼介紹 31內(nèi)碼介紹¾內(nèi)碼,是指整機(jī)語言文字系統(tǒng)中當(dāng)前使用的二 進(jìn)制字符編碼,即計算機(jī)系統(tǒng)能識別的輸入輸出

16、字符編碼,如CN、JP、KR等內(nèi)碼¾目的,是溝通輸入、輸出與系統(tǒng)平臺之間的信 息交換,通過內(nèi)碼可以達(dá)到通用和高效率傳輸 文本的目的¾英文ASCII字符采用一個字節(jié)的內(nèi)碼表示,中文 字符如國標(biāo)字符集中,GB2312、GBK、GB13000等皆用雙字節(jié)內(nèi)碼,GB18030-2000(27,533漢 字雙字節(jié)內(nèi)碼漢字為20,902個,其余6,631個 漢字用四字節(jié)內(nèi)碼。 32內(nèi)碼介紹¾輸入碼:就是使用標(biāo)準(zhǔn)鍵盤輸入某種字符 編碼的方法¾目前,我國已推出的輸入碼有數(shù)百種, 但用戶使用較多的約為十幾種,輸入碼 編碼依據(jù),大體可分為順序碼、音碼、 形碼、音形碼四類。如

17、¾“ 國 ” 字的內(nèi)碼輸入方法有,用全拼,碼 值為 “ guo ” ;用區(qū)位碼,為 “ 2590” ;用五 筆字型則為 “ l ” 33Unicode 碼介紹 34Unicode 碼介紹¾由于各個國家都像中國這樣搞出一套自己的編 碼標(biāo)準(zhǔn),結(jié)果互相之間誰也不懂誰的編碼,誰 也不支持別人的編碼¾基于此,國際組織決定著手解決這個問題,即 重新弄一套包括了地球上所有文化、所有字母 和符號的編碼。他們打算叫它"Universal Multiple-Octet Coded Character Set“ (通 用多八位編碼字符集 ,簡稱 UCS, 俗稱 "U

18、NICODE"¾該編碼于1990年開始研發(fā),1994年正式公布, 最新版本是2009年10月的Unicode 5.2.0 35 Unicode 碼介紹¾Unicode碼特征¾Unicode是一種在計算機(jī)上使用的字符編碼。 它為每種語言中的每個字符設(shè)定了統(tǒng)一并 且唯一的二進(jìn)制編碼,以滿足跨語言、跨 平臺進(jìn)行文本轉(zhuǎn)換、處理的要求¾Unicode在制訂時沒有考慮與任何一種現(xiàn)有 的編碼方案保持兼容,也沒有一種簡單的 算術(shù)方法可以把文本內(nèi)容從Unicode編碼和 另一種ANSI編碼進(jìn)行轉(zhuǎn)換,這種轉(zhuǎn)換必須 通過查表來進(jìn)行。¾ISO規(guī)定Unicod

19、e必須用兩個字節(jié)表示一個 字符 36 Unicode 碼介紹¾Unicode對于半角字符,其低8位保持不變, 高8位永遠(yuǎn)是0,因此這種大氣的方案在保存 英文文本時會多浪費一倍的空間¾UCS編碼方式分為UCS-2和UCS-4兩種, UCS-2,216=65536個碼位,與Unicode的2byte編碼 基本一樣。 UCS-4,Unicode字符集將所有 字符按照使用上的頻繁度劃分為17個層面 (Plane,每個層面上有216=65536個字符碼 空間¾ 37Unicode 碼介紹¾UCS-4中17個平面中只有少數(shù)平面被使用, UCS-4則主要用于保存輔助平

20、面¾UCS-4根據(jù)最高位為0的最高字節(jié)分成27=128個group。每個group再根據(jù)次高字節(jié)分為256個平面(plane。每個平面根據(jù)第2個字節(jié)分 為256行 (row,每行根據(jù)第1字節(jié)有256個 碼位(cell。group 0的平面0被稱作BMP (Basic Multilingual Plane。將UCS-4的 BMP去掉前面的兩個零字節(jié)就得到了UCS-2。 Unicode標(biāo)準(zhǔn)計劃使用group 0 的17個平面, 從BMP(平面0到平面16,即數(shù)字0-0x10FFFF 38 Unicode 碼介紹 39 Unicode 碼介紹¾UTF編碼¾Unicode

21、 Translation Format,即將 Unicode轉(zhuǎn)化成某種格式,常見的有UTF-8,UTF-16,UTF-32等,也是一種前綴碼。 ¾UTF-32、UTF-16 和 UTF-8 是 Unicode 標(biāo) 準(zhǔn)的編碼字符集的字符轉(zhuǎn)換方案,UTF-16 使用一個或兩個未分配的16位代碼單元的 序列對Unicode代碼進(jìn)行編碼;UTF-32 同 理,以節(jié)省空間和便于傳輸。¾UCS規(guī)定了怎么用多個字節(jié)表示各種字符, 怎樣傳輸這些字符編碼,是由UTF(UCS Transformation Format規(guī)范規(guī)定的 40 Unicode 碼介紹¾UTF-8¾U

22、TF-8是UNICODE的一種變長字符編碼又稱 萬國碼,由Ken Thompson于1992年創(chuàng)建。 現(xiàn)在已經(jīng)標(biāo)準(zhǔn)化為RFC 3629。UTF-8用1到6個字節(jié)來編碼UNICODE字符。用在網(wǎng)頁上可 以使同一頁面顯示中文簡體繁體及其它語 言(如日文,韓文等¾對于半角字符,UTF-8表示與ASCII字符表 示是一樣的,只占一個字節(jié),解決了 Unicode浪費空間的情況,但對于純漢字編 碼使用國標(biāo)碼無疑將更節(jié)省空間。 41 Unicode 碼介紹¾UTF-8的特征¾ASCII不作變換, 其他字符做變長編碼, 每個字符1-3 byte,通常作為網(wǎng)絡(luò)傳輸和存儲碼¾

23、;與CPU字節(jié)順序無關(guān), 可以在不同平臺之間交流 ¾容錯能力高, 任何一個字節(jié)損壞后, 最多只會導(dǎo)致 一個編碼碼位損失, 不會鏈鎖錯誤(如GB碼錯一個字 節(jié)就會整行亂碼¾缺點:8位字符的UTF-8編碼會被email網(wǎng)關(guān)過濾,因 為internet信息最初設(shè)計為7位ASCII碼。因此產(chǎn)生 了UTF-7編碼。UTF-8在它的表示中使用值110xxxxx 的幾率并不低,而現(xiàn)在的實現(xiàn)如ISO2022,4873, 6429,和8859系統(tǒng),會把它錯認(rèn)為是C1控制碼。因 此產(chǎn)生了UTF-7.5編碼用于這些系統(tǒng) 42Unicode 碼介紹¾UTF-8與Unicode轉(zhuǎn)換

24、0;Unicode編碼與UTF-8的轉(zhuǎn)換,只是簡單拆分 和組合Unicode碼,將unicode字節(jié)流嵌套 到x中即可 43Unicode 碼介紹¾UTF-8與Unicode轉(zhuǎn)換¾例如 “ 漢 ” 字的Unicode編碼是0x6C49。 0x6C49在0800-FFFF之間,所以采用3字節(jié) 模板:1110xxxx 10xxxxxx 10xxxxxx將0x6C49寫成二進(jìn)制是:0110110001 001001用這個比特流依次代替模板中的x,得到: 111001101011000110001001,也就 是:0xE6B189,即UTF-8注:windows下notepad不支

25、持UTF-8轉(zhuǎn)換 44Unicode 碼介紹¾UTF-8與Unicode轉(zhuǎn)換¾如果要將UTF-8轉(zhuǎn)換成Unicode,則先得判 斷UTF-8比特流開頭有幾個 “ 1” ,確定采用多 少字節(jié)的模板,然后分別去掉UTF-8的頭, 重新組合得到Unicode碼 45Codepage 介紹 46Codepage 介紹¾Codepage¾即代碼頁,是字符集編碼的別名,也有人 稱"內(nèi)碼表 “¾如果全世界人民在計算機(jī)剛發(fā)明之初就統(tǒng) 一采用Unicode作為字符編碼,那么代碼頁 就沒有存在的必要了¾所以Codepage主要實現(xiàn)了Unicod

26、e與世界各 國內(nèi)碼之間轉(zhuǎn)換的依據(jù)(映射表¾例如IBM MBCS Codepage :936代表簡體中 文,950代表繁體中文 47Codepage 介紹¾Linux下Codepage的作用¾在Linux 下引入對Codepage的支持主要是 為了訪問FAT/VFAT/FAT32/NTFS/NCPFS等文 件系統(tǒng)下的多語種文件的問題,目前在NTFS 和FAT32/VFAT下的文件系統(tǒng)上都使用了 Unicode,這就需要系統(tǒng)在讀取這些文件時 動態(tài)將其轉(zhuǎn)換為相應(yīng)的語言編碼(內(nèi)碼, 因此引入了NLS支持.其相應(yīng)的程序文件在 linux-2.6.34fsnls下¾Linux支持近40種語言文字編碼 48Codepage 介紹

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論