漢字與編碼相關31篇184版03_第1頁
漢字與編碼相關31篇184版03_第2頁
漢字與編碼相關31篇184版03_第3頁
漢字與編碼相關31篇184版03_第4頁
漢字與編碼相關31篇184版03_第5頁
已閱讀5頁,還剩63頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

漢字與編碼主講人:李罡綜述漢字編碼談亂碼縱橫談關于編碼所謂編碼,是以固定的順序排列字符,并以此做為記錄、存貯、傳遞、交換的統(tǒng)一內部特征,這個字符排列順序被稱為“編碼”。與計算機處理漢字相關的編碼主要有:機內碼、交換碼、輸入碼(音碼與形碼)、輸出碼等。字庫的編碼是字庫組織的依據,也是文字處理的基礎。不同國家和地區(qū)有不同的編碼標準,和中文字庫有關的常見編碼有:單字節(jié)編碼、GB2312-80、BIG5編碼、ISO10646、Unicode編碼、GB13000.1-1993、GBK、GB18030-2000等單字節(jié)編碼(ASCII)美國的國家標準:ASCII(AmericanStandardCodeforInformationInterchange),進一步成為世界性的編碼標準:ISO646(全名為7-bitcodedcharactersetforinformationinterchange)。時至今日,雖然一個字節(jié)(byte)的長度已經從7位(bit)增加為8位,ASCII和ISO646仍然是電腦與網絡世界里重要的奠基標準。ASCII與ISO6467個bit可以提供128個編碼位置(0~127)分為二個部分:94個圖形字符和34個控制字符圖形字符包括:52個大小字英文字母、10個阿拉伯數字、9個標點符號、6個括號及17個其它符號,編碼范圍從33到126??刂谱址麆t包括10個傳輸控制字符、6個版面調整字符、4個設備控制字符、4個信息分隔字符和10個特殊控制字符,編碼為0~32及127。ASCII編碼

字符十進制碼八進制碼十六進制碼…………0486030

…………9577139…………A6510141…………Z901325A…………a9714161…………z1221727A…………當電腦或網絡設備收到一連串的字符信號時,通常會一邊接收一邊切分為字節(jié)(即每8位一切),并且立刻分辨剛收到的字節(jié)究竟是控制字符還是圖形字符。若是屬接收設備相關的控制字符時(例如傳輸控制編碼為7的BELL字符),電腦或網絡設備會截留該字符并立即做出對應動作(例如BELL字符會驅使接收設備叫一聲),否則不予處理而傳送給后續(xù)設備。換言之,電腦和網絡設備會吃掉字符串里的特定控制字符。ASCII開始時采用7位編碼,高位(bit-8)用于在網絡傳輸中做奇偶校驗。后來,為了表示一些常見的歐洲字符,對高位(bit-8)為1的128個碼位也進行了擴展編碼。8位字符集只能容納256個字符,比如Latin-1(ISO646)包括了英語、數字、常用標點和常見的一些歐洲字符。但是它們無法很好地承擔在世界范圍內進行信息交換的重任,因為它們沒有足夠的空間來容納其他語言上萬的字符。后來,很多國家為了表示本國文字,使用2或多字節(jié)來編碼,如:日語(JIS)、漢語(GB、BIG5)、韓語(KS)、印度語(ISCII)等等。漢字國家標準1980年我國頒布了第一個漢字編碼字符集標準,即GB2312-80《信息交換用漢字編碼字符集基本集》。該標準共收了6763個漢字及常用符號,奠定了中文信息處理的基礎。GB2312-80全稱是GB2312-80《信息交換用漢字編碼字符集基本集》,1980年發(fā)布,是中文信息處理的國家標準,在大陸及海外使用簡體中文的地區(qū)(如新加坡等)是強制使用的唯一中文編碼。P-Windows3.2和蘋果OS就是以GB2312為基本漢字編碼,Windows95/98則以GBK為基本漢字編碼、但兼容支持GB2312。GB2312-80區(qū)位碼區(qū)碼:01-94位碼:01-9401區(qū)-15區(qū):符號區(qū)16區(qū)-88區(qū):漢字區(qū)區(qū)位碼->國標碼

區(qū)碼+160(0xA0)=國標碼高位

位碼+160(0xA0)=國標碼低位GB2312-80的特點雙字節(jié)編碼范圍:A1A1~FEFEA1-A9:符號區(qū),包含682個符號B0-F7:漢字區(qū),包含6763個漢字GB碼共收錄6763個簡體漢字、682個符號,其中漢字部分:一級字3755,以拼音排序,二級字3008,以偏旁排序。該標準的制定和應用為規(guī)范、推動中文信息化進程起了很大作用。BIG5編碼是目前臺灣、香港地區(qū)普遍使用的一種繁體漢字的編碼標準,包括440個符號,一級漢字5401個、二級漢字7652個,共計13060個漢字。值得說明的是,并不是GB碼就是簡體、BIG5碼就是繁體。事實上,GB碼中也包括繁體字,BIG5碼中也包含簡體字。為了預防多字節(jié)字符編碼被電腦或網絡設備“吃掉”其中的某些字節(jié),在編碼時就必須避開每個字節(jié)的0~32和127這34個控制碼(0~31叫做C0控制碼區(qū),128~159叫做C1控制碼區(qū)),這樣就會嚴重浪費編碼空間。另外,由于廠商和組織眾多,缺乏共識,往往是你編你的碼,我編我的碼,其后果則是引發(fā)萬碼奔騰的亂象。為容納全世界各種語言的字符,ISO于1984年發(fā)起制定新的國際字符集編碼標準。新標準由工作小組ISO/IECJTC1/SC2/WG2(以下簡稱WG2)負責擬定,標準最后定名為“通用多八位字符集”“UniversalMultiple-OctetCodedCharacterSet”(簡稱UCS),其編號則定為ISO/IEC10646。ISO10646字符集的正規(guī)形式為32位,即4個字節(jié),簡記為USC-4。4個字節(jié)分別代表編碼結構中的組(group)、面(plane)、列(row)和格(cell)。WG2規(guī)定b32必須為0,且每個平面的最后二個編碼位置,即FFFE和FFFF,保留不用。所以ISO10646共有128*256=32768個面,每個面有256*256-2=65534個編碼位置,共計2,147,418,112個編碼位置。1993年國際標準化組織發(fā)布了ISO/IEC10646-1《信息技術通用多八位編碼字符集第一部分體系結構與基本多文種平面》。我國等同采用此標準制定了GB13000.1-1993。該標準采用了全新的多文種編碼體系,收錄了中、日、韓20902個漢字,是編碼體系未來發(fā)展方向。ISO10646中第0組第0面稱為“基本多語言文字面”“BasicMulti-lingualPlane,BMP”。當只使用BMP字符碼時,可以省略群八位和面八位,因而將字符碼由32位縮短為16位,稱為ISO10646字符碼的基本面形式(可簡稱為UCS-2)。ISO10646所有字面中,目前僅有第0、第1和第2字面真正收容編碼字符。UCS-2(BMP)(Unicode)(1)0000~007Fh:基本拉丁字母區(qū)。其中0000~001Fh為C0控制碼,0020h為空格(space),0021~007Eh為ASCII圖形字元,007Fh為控制碼DEL。事實上,這128個字元碼只要把前8個位元去掉就可變成習見的8位元形式的ASCII碼。(2)0080~00A0h:控制碼區(qū)。其中0080~009Fh為C1控制碼,00A0h為不中斷空格(no-breakspace)。(3)00A1~1FFFh:拼音文字區(qū)。收容除基本拉丁字母以外的各種拼音文字字元,包括歐洲各國語言、希臘文、斯拉夫語文、希伯來文、阿拉伯文、亞美尼亞文、印度各地方言、馬來文、泰文、寮文、柬普寨文、滿文、蒙文、藏文、印地安語文等。(4)2000~28FFh:符號區(qū)。收容各種符號,包括標點符號、上下標、錢幣符號、數字、箭頭、數學符號、工程符號、光學辨識符號、帶圈或帶括符的文數字、表格繪製符號、地理圖示、盲用點字、裝飾圖形等。(5)2E80~33FFh:中日韓符號區(qū)。收容康熙字典部首、中日韓輔助部首、注音符號、日本假名、韓文音符,中日韓的符號、標點、帶圈或帶括符文數字、月份,以及日本的假名組合、單位、年號、月份、日期、時間等。(6)3400~4DFFh:中日韓認同表意文字擴充A區(qū),總計收容6,582個中日韓漢字。(7)4E00~9FFFh:中日韓認同表意文字區(qū),總計收容20,902個中日韓漢字。(8)A000~A4FFh:彝族文字區(qū),收容中國南方彝族文字和字根。(9)AC00~D7FFh:韓文拼音組合字區(qū),收容以韓文音符拼成的文字。(10)D800~DFFFh:S區(qū),專用於UTF-16,詳情後敘。(11)E000~F8FFh:專用字區(qū),其內容WG2不予規(guī)定,保留供使用者自行添加ISO10646未收容的字元。(12)F900~FAFFh:中日韓相容表意文字區(qū),總計收容302個中日韓漢字。(13)FB00~FFFDh:文字表現形式區(qū),收容組合拉丁文字、希伯來文、阿拉伯文、中日韓直式標點、小符號、半形符號、全形符號等。WG2依語言特性把各種文字區(qū)分為表意文字和非表意文字兩類。WG2截至目前為止所收集、整理的非表意文字和符號部分,扣除已編入BMP者,其餘全部編入第1字面。而表意文字部分扣除已編入BMP者,其餘全部編入第二字面。第二字面(1)中日韓認同表意文字擴充B區(qū):總計42,807個中日韓越漢字,編碼範圍為0002-0100~0002-A836h。(2)CNS11643相容字元區(qū):收容被認同的CNS11643字元527個,編碼範圍為0002-F800~0002-FA16h。Unicode與ISO制定10646的同時,以Universal,Unique和Uniform為主旨的Unicode組織也開始開發(fā)一個16位字符標準,為避免兩種16位編碼的競爭,1991年10月二組織達成協議,采用同一編碼字集。這就是今天的UCS-2(BMP,BasicMultilingualPlane,16bit)和Unicode,但它們仍然是不同的方案。Unicode編碼目前Unicode是采用16位編碼體系,其字符集內容與ISO10646的BMP(BasicMultilingualPlane)相同。Unicode于1992年6月通過DIS(DrafInternationalStandard),版本V2.0于1996公布,內容包含符號6811個,漢字20902個,韓文拼音11172個,造字區(qū)6400個,保留20249個,共計65534個。ISO10646的編碼空間足以容納古今人類使用過的所有文字和符號。但目前真正被使用的文字或符號,絕大多數都已經編入BMP,它們的使用頻率可以超過99%。但是,在Unicode世界中,遇到必須使用ISO10646中第1、第2字面甚至更后方字面的字符時,怎么辦?Unicode協會提出的解決方式稱為UTF-16或代理法(surrogates)。UTF為“UCS(orUnicode)TransformationFormat”的縮寫。UTF-16意即把原為32位的ISO10646字符碼轉換為2個或多個16位的Unicode。目前的作法是組合兩個Unicode字符碼來代表一個ISO10646字符,所以又稱為代表法。兩個做為代表的Unicode,位於前方(左方)者稱為高半字元,限定只能選用D800~DBFFh當中之一,位於後方(右方)者稱為低半字元,限制只可從DC00~DFFFh當中選擇。高低半字元的編碼位置各為1,024=4×256,因此UTF-16總計可提供(4×256)×(4×256)=16×65536個編碼位置,亦即16個字面。對BMP而言,當然無需使用UTF-16轉碼,所以UTF-16主要應用於ISO10646的第1~第14字面(因為第15字面為專用字面,WG2不予編碼)。Unicode->UTF16將原來的32位元ISO10646字元碼,從右往左取出10個位元,前頭附加上特定的6個位元110111,即成為低半字元。接著往左取出6個位元,做為高半字元的最低6個位元,然後再往左取出4個位元(其值可顯示第0~第15字面),將其值減1,置於剛才那6個位元的左方,最後在最前方附加上特定的6個位元110110,即成為高半字元。由于Unicode編碼是16位編碼,因此它和很多只能使用US-ASCII編碼的應用程序不兼容,因此產生了對Unicode進行各種轉換的編碼,以滿足不同場合的需要。具體到產生亂碼的編碼形式,一般有兩種,即:UTF-7和UTF-8。UTF-7這是一種使用7位ASCII碼對Unicode碼進行轉換的編碼。它的設計目的仍然是為了在只能傳遞7為編碼的郵件網關中傳遞信息。UTF-7對英語字母、數字和常見符號直接顯示,而對其他符號用修正的Base64編碼。符號+和-號控制編碼過程的開始和暫停。所以亂碼中如果夾有英文單詞,并且相伴有+號和-號,這就有可能是UTF-7編碼。UTF-8很多應用程序不能直接處理Unicode或UCS-4/UCS-2中的16(32)位字符。如Unicode中含有的\x0、\等字符將不能直接用于文件名或C字符串等等。利用UTF-8轉碼規(guī)則可將一個Unicode或ISO10646字符碼轉換成1~4個字節(jié)的編碼。UTF-8的轉換規(guī)則若原始字元碼位於0000~007Fh(或0000-0000~0000-007Fh)的範圍內,則直接截取最右8個位元即可,轉換結果其實就是ASCII碼。若原始字元碼大於007Fh(或0000-007Fh),亦即超出ASCII範圍時,就必須轉換成2~4個位元組。UTF-8規(guī)定,以轉換後第1位元組起頭連續(xù)設為“1”的標記位元的數目表示轉換成幾個位元組:110表示轉換結果為2個位元組,1110表示3個位元組,而11110則表示4個位元組。至於跟隨在標記位元之後設為0的位元,其在分隔標記位元和字元碼位元。第2~第4位元組起頭兩個位元被設為10當做識別,剩下的6個位元才做為字元碼位元使用??傆嫞?位元組UTF-8碼剩下11個字元碼位元,可用以轉換0080~07FFh的原始字元碼。3位元組剩下16個字元碼位元,可用以轉換0800~FFFFh的原始字元碼。而4位元組則剩下21個字元碼位元,可用來轉換0001-0000~001F-FFFh(即ISO10646第1~第31字面)的原始字元碼。請注意,雖然4個位元組的UTF-8編碼可包容1~3個位元組的碼,3個位元組的編碼可包容1~2個位元組的碼,以及2個位元組的編碼可包容1個位元組的碼,但是UTF-8規(guī)定轉碼時必須選擇最短者。換言之,ASCCI區(qū)只能轉換成單一位元,0080~07FFh的原始字元碼只能轉換成2個位元組長度,依此類推。GBK編碼GBK編碼是中國大陸制訂的、等同于UCS的新的中文編碼擴展國家標準。GBK工作小組于1995年12月完成GBK規(guī)范。該編碼標準兼容GB2312,共收錄漢字21003個、符號883個,并提供1894個造字碼位,簡、繁體字融于一庫。Windows95/98簡體中文版的字庫表層編碼就采用的是GBK,通過GBK與UCS之間一一對應的碼表與底層字庫聯系GBK編碼英文名:ChineseInternalCodeSpecification中文名:漢字內碼擴展規(guī)范1.0版雙字節(jié)編碼,GB2312-80的擴充,在碼位上和GB2312-80兼容范圍:8140~FEFE(剔除xx7F)共23940個碼位包含21003個漢字,包含了ISO/IEC10646-1中的全部中日韓漢字GB18030-2000信息產業(yè)部和原國家質量技術監(jiān)督局于2000年3月17日聯合發(fā)布了GB18030-2000《信息技術信息交換用漢字編碼字符集基本集的擴充》。該方案與GB2312信息處理交換碼所對應的事實上的內碼標準兼容,在字匯上支持GB13000.1的全部中、日、韓(CJK)統(tǒng)一漢字字符和全部CJK擴充A的字符,并且確定了編碼體系和27484個漢字,兼容性、擴展性、前瞻性兼?zhèn)?。該標準作為國家強制性標準自發(fā)布之日起實施,過渡期到2001年8月31日止。GB18030是國家標準,在技術上是GBK的超集,并與其兼容,因此,GBK將結束其歷史使命。GB18030-2000英文名:ChineseInternalCodeSpecification中文名:信息技術信息交換用漢字編碼字符集基本集的擴充(2000-03-17發(fā)布和實施)單字節(jié)、雙字節(jié)、四字節(jié)編碼向下與國家標準GB2312信息處理交換碼所對應的事實上的內碼標準兼容。在字匯上支持GB13000.1的全部中、日、韓(CJK)統(tǒng)一漢字字符和全部CJK統(tǒng)一漢字擴充A的字符。收錄的字符雙字節(jié)部分收錄內容主要包括GB13000.1全部CJK漢字20902個、有關標點符號、表意文字描述符13個、增補的漢字和部首/構件80個、雙字節(jié)編碼的歐元符號等。四字節(jié)部分收錄了上述雙字節(jié)字符之外的,包括CJK統(tǒng)一漢字擴充A在內的GB13000.1中的全部字符。GB18030編碼空間約為160萬碼位,目前已編碼的字符約2.6萬。隨著我國漢字整理和編碼研究工作的不斷深入,以及國際標準ISO/IEC10646的不斷發(fā)展,GB18030所收錄的字符將在新版本中增加。GB18030在體系結構上延續(xù)GB2311-1990《信息處理七位和八位編碼字符集代碼擴充技術》體系,采用單/雙/四字節(jié)混合編碼。該標準與現有的絕大多數操作系統(tǒng)、中文平臺在計算機內碼一級兼容,能夠支持現有的應用系統(tǒng),在字匯上與GB13000.1-1993《信息技術通用多八位編碼字符集(UCS)第一部分:體系結構與基本多文種平面》兼容,從而為中文信息在國際互聯網上的傳輸與交換提供了保障。該標準同時收錄了臧文、蒙文、維吾爾文等主要的少數民族文字,為推進少數民族的信息化奠定了堅實的基礎。碼位范圍分配圖字節(jié)數碼位空間碼位數目單字節(jié)0x00~0x80129雙字節(jié)第一字節(jié)第二字節(jié)239400x81~0xFE0x40~0x7E0x80~0xFE四字節(jié)第一字節(jié)第二字節(jié)第三字節(jié)第四字節(jié)15876000x81~0xFE0x30~0x390x81~0xFE0x30~0x39碼位總體結構圖漢字國家標準的歷史發(fā)展總結GB2312-80GB13000.1-1993(ISO10646-1)GBKGB18030-2000亂碼雜談ROT13ANSIUUENCODEMIME/BASE64Quoted-PrintableROT13VYbirlbh![a..m]->[n..z];[n..z]->[a..m]“abcdefghijklm”“nopqrstuvwxyz”ANSIANSI(AmericanNationalStandardsInstitute)規(guī)定了一組控制字符和鍵盤的擴充規(guī)則很多BBS的WWW版本在文本轉換的時候沒有解釋ANSI的效果,而是把控制符號01Bh解釋成為*號,這就形成了閱讀BBS文章的特殊亂碼效果。比如:*[1m(高亮度字)、*[1;5;33m(高亮度黃色閃爍字)、*[1;31;44(高亮度藍底紅色字)等等UUENCODEUUENCODE的UU指用于Unix之間傳送二進制文件,就是UnixtoUnix。因為UUENCODE使用了一些字符在一些郵件網關(特別是那些轉換ASCII和EBCDIC碼的網關)中造成傳輸障礙,(還有一些軟件不能對所有UUENCODE的算法進行正確解碼而導致郵件的閱讀困難),因此MIME被設計用于替代UUENCODE,但是結果是這些協議共存。MIME/BASE64MIME/BASE64的算法很簡單,它將字符流順序放入一個24位的緩沖區(qū),缺字符的地方補零。然后將緩沖區(qū)截斷成為4個部分,高位在先,每個部分6位,用下面的64個字符重新表示:“ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz+/”。如果輸入只有一個或兩個字節(jié),那么輸出將用等號“=”補足。這可以隔斷附加的信息造成編碼的混亂。這就是BASE64。UEsDBBQAAgAIAEapPiS/mrkHoQEAAEECAAAMAAAAYWNhZDd+dWUudHh0dVFRb5swGHyPlP9Q5Iet

TUICzCUJASTiFuIQhwbHRJnUqmRsndqmVQO0CsK/fXbRVvVh+AV9vrvv7txunYiPV8rAW3n33w5B

R9FAN3ld34Axr9OHIjtkt7wC3bmKHD+zznjteTGvjBnVFGCdxz265XW7dfI+ZVFyRjegO3hix8nl

fGcdjeLqy/rGTp0Sj+Jp8Djho9oIWRSX0IYIwwmWbF4RHKYK0ByCaI9u4u3HukYZIvE32+fZyz7LQuoted-Printable=A1=B0=C2=D2=C2=EB=B4=F3=C8=AB=A1=B1=A3=AC=D7=F7=D5=DFbluesea=A3=AC=CB=AE=C4=BE=C7=E5=BB=AABBS=B3=C9=D4=B1=A1=A3=BB=B6=D3=AD=D4=DABBS=D6=D0=D7=AA=D4=D8=A3=AC=B0=EF=D6=FA=BC=C6=CB=E3=BB=FA=B3=F5=D1=A7=D5=DF=BD=E2=BE=F6=CA=B9=D3=C3=C8=ED=BC=FE=B9=FD=B3=CC=D

溫馨提示

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

評論

0/150

提交評論