字符集,字体,编码,代码页,输入法
GB2312編碼漢字6763字,是在Windows 95出現以前,國內信息處理普遍采用的編碼標準。GBK是在保持GB2312原貌的基礎上,將其字匯擴充至ISO 10646中的CJK 20902漢字,同時也就包容了臺灣的工業標準Big5中的全部漢字,沒有體系結構的變化。而GB18030則不然,它是在GBK的基礎上做進一步擴充,不但把CJK-擴展A的6582漢字擴充進去,而且還改變了GBK的體系結構。盡管GB2312、BIG5、GBK在某種程度上依然尚存,但ISO 10646(GB13000/Unicode)已日漸成為主流編碼。
? ? ?3)、查看工具:
????????1,Windows有個系統工具叫做字符映射表,可以查看字體中的可用字符:開始--運行--charmap.
????????2,BabelMap【字符映射表/字體瀏覽工具】比Windows自帶的好用?誰知道呢.最新版本的BabelMap支持Unicode6.0.該軟件可使用系統上安裝的所有字體瀏覽 Unicode 標準中的所有字符,還帶有拼音及部首檢字法。
? ? ?4)、說明
????????字符集 是一種語言或多個或全部語言中所有不同文字的集合,在中文中尤為明顯,GB2312和GBK就是兩種中文字符集。 ????????字體是某種文字不同的美術字形,比如中文的宋體、楷體………… ????????字符集和字體有一些關系,比如,微軟的宋體就包含了GBK字符集的所有文字,而楷體就只GB-2312中常用的6000多漢字的字形。 ????????字符集是一個映射表。一個字符是用二進制數字表示的,但具體是什么字符,是根據字符集決定的。 ????????字庫有兩種標準:?postscript字庫和truetype字庫。這兩種字體標準都是采用曲線方式描述字體輪廓,因此都可以輸出很高質量的字形。TTF(TrueTypeFont)是一種字庫名稱。TTF(TrueTypeFont)是Apple公司和Microsoft公司共同推出的字體文件格式,隨著windows的流行,已經變成最常用的一種字體文件表示方式。 ASCII??(國際標準ISO-646)?????????ASCII規定用7位二進制數字來表示英文字符,ASCII被定為國際標準之后的代號為ISO-646。由于ASCII碼只使用了7個二進制位,也就是說一個字節可以表示的256個數字中,它僅使用了0~127這128個碼位,剩下的128個碼位便可以用來做擴展,用來表示一些特定語言所獨有的字符,因此對這多余的128個碼位的不同擴展,就形成了一系列ISO-8859-*的標準。例如為英語作了專門擴展的字符集編碼標準編號為ISO-8859-1,也叫做Latin-1,為希臘語所作的擴展編號為ISO-8859-7等,完整的列表可以參考《Java Internationalization》一書。
ASCII碼于1961年提出,用于在不同計算機硬件和軟件系統中實現數據傳輸標準化,在大多數的小型機和全部的個人計算機都使用此碼。ASCII碼劃分為兩個集合:128個字符的標準ASCII碼和附加的128個字符的擴充和ASCII碼。比較EBCDIC。其中95個字符可以顯示。另外33個不可以顯示。 標準ASCII碼為7位,擴充為8位。 目前使用最廣泛的西文字符集及其編碼是 ASCII 字符集和 ASCII 碼( ASCII 是 American Standard Code for Information Interchange 的縮寫),它同時也被國際標準化組織( International Organization for Standardization, ISO )批準為國際標準。 0~31及127(共33個)是控制字符或通信專用字符(其余為可顯示字符),如控制符:LF(換行)、CR(回車)、FF(換頁)、DEL(刪除)、BS(退格)、BEL(振鈴)等;通信專用字符:SOH(文頭)、EOT(文尾)、ACK(確認)等;ASCII值為8、9、10和13分別轉換為退格、制表、換行和回車字符。它們并沒有特定的圖形顯示,但會依不同的應用程序而對文本顯示有不同的影響。32~126(共95個)是字符(32sp是空格),其中48~57為0到9十個阿拉伯數字,65~90為26個大寫英文字母,97~122為26個小寫字母,其余為一些標點符號、運算符號等。 MBCS(Muilti-Bytes Charecter Set,多字節字符集) 為了擴充ASCII編碼,以用于顯示本國的語言,不同的國家和地區制定了不同的標準,由此產生了 GB2312, BIG5, JIS 等各自的編碼標準。這些使用 2 個字節來代表一個字符的各種漢字延伸編碼方式,稱為 ANSI 編碼,又稱為"MBCS(Muilti-Bytes Charecter Set,多字節字符集)"。在簡體中文系統下,ANSI 編碼代表 GB2312 編碼,在日文操作系統下,ANSI 編碼代表 JIS 編碼,所以在中文 windows下要轉碼成gb2312,gbk只需要把文本保存為ANSI 編碼即可。 不同 ANSI 編碼之間互不兼容,當信息在國際間交流時,無法將屬于兩種語言的文字,存儲在同一段 ANSI 編碼的文本中。一個很大的缺點是,同一個編碼值,在不同的編碼體系里代表著不同的字。這樣就容易造成混亂。導致了unicode碼的誕生。其中每個語言下的ANSI編碼,都有一套一對一的編碼轉換器,Unicode變成所有編碼轉換的中間介質。所有的編碼都有一個轉換器可以轉換到Unicode,而Unicode也可以轉換到其他所有的編碼。
UNICODE與UCS(國際通用字符集)????????Unicode當然是一個很大的集合,現在的規模可以容納100多萬個符號。
Unicode只是一個符號集,它只規定了符號的二進制代碼,卻沒有規定這個二進制代碼應該如何存儲。?
比如,漢字“嚴”的unicode是十六進制數4E25,轉換成二進制數足足有15位(100111000100101),也就是說這個符號的表示至少需要2個字節。表示其他更大的符號,可能需要3個字節或者4個字節,甚至更多。
這里就有兩個嚴重的問題,第一個問題是,如何才能區別unicode和ascii?計算機怎么知道三個字節表示一個符號,而不是分別表示三個符號呢?第二個問題是,我們已經知道,英文字母只用一個字節表示就夠了,如果unicode統一規定,每個符號用三個或四個字節表示,那么每個英文字母前都必然有二到三個字節是0,這對于存儲來說是極大的浪費,文本文件的大小會因此大出二三倍,這是無法接受的。?
????它們造成的結果是:
?????1)出現了unicode的多種存儲方式,也就是說有許多種不同的二進制格式,可以用來表示unicode。
?????2)unicode在很長一段時間內無法推廣,直到互聯網的出現。?? ????
????????為什么使用Unicode其實原因很簡單,因為Unicode比ANSI好用。 自從Windows2K開始,Win的系統內核開始完全支持并完全應用Unicode編寫,所有ANSI字符在進入底層前,都會被相應的API轉換成Unicode。所以,如果你一開始就使用Unicode,則可以減少轉換的用時和RAM開銷。 對于JAVA/.NET等這些“新”的語言來說,內置的字符串所使用的字符集已經完全是Unicode最重要的是,目前世界上大多數程序用的字符集都是Unicode,因為Unicode有利于程序國際化和標準化。
??????????
????????Unicode的另一個設計目標,對今天影響深遠,那就是對所有字符都采用16位編碼(即用一個大小不超過2的16次方的整數數字給每個字符編號,注意從這個意義上也可以看出,Unicode是一種編碼字符集,而非字符集編碼)。說這個設計目標對現今影響深遠,完全不是表揚,因為到后來連Unicode的設計者也發現,16位編碼僅有65536個碼位,遠遠不能容納世界上所有的字符,但當意識到這個問題的時候,Unicode大部分的規范已經制定完畢,也有相當程度的普及,完全推倒重來是不現實的。這成了一個遺留問題,也是surrogate pair這種蹩腳解決方案的發端。 ? ? ??ISO一開始就確定了UCS是一個31位的編碼字符集(即用一個大小不超過2的31次方的整數數字為每個字符編號),這回真的足以容納古往今來所有國家,所有語言所包含的字符了。雖然后來他們意識到,2的31次方個碼位又實在太多了 ????????unicode在編碼上和UCS保持一致,在實現上有自己的規則,而UCS只定義了編碼標準。unicode的實現形式上 有UTF-8,UTF-16,UTF-32,還有UTF-7等。UCS編碼也有自己的格式:UCS-2和UCS-4等等。unicode的編碼可以和UCS-2和UCS-4保持一致。但是又略有不同。UTF-16是UCS-2的擴展,UTF-32是UCS-4的子集。也就是說,UTF-16的實現上對code point的支持范圍超過UCS-2,而UTF-32對code point的表示卻又在UCS-4的范圍之內。 ? ? ?在編碼層面上,UCS-2就是用兩個字節編碼,UCS-4就是用4個字節(實際上只用了31位,最高位必須為0)編碼。 ? ? ?UCS-2有2^16=65536個碼位,UCS-4有2^31=2147483648個碼位。 ? ? ?UCS-4根據最高位為0的最高字節分成2^7=128個group。每個group再根據次高字節分為256個plane。每個plane根據第3個字節分為256行 (rows),每行包含256個cells。當然同一行的cells只是最后一個字節不同,其余都相同。 ? ? ?group 0的plane 0被稱作Basic Multilingual Plane, 即BMP。或者說UCS-4中,高兩個字節為0的碼位被稱作BMP。 ? ? ?將UCS-4的BMP去掉前面的兩個零字節就得到了UCS-2。在UCS-2的兩個字節前加上兩個零字節,就得到了UCS-4的BMP。而目前的UCS-4規范中還沒有任何字符被分配在BMP之外。 ? ? ?Unicode最初支持16位的code point,后來發現不夠用,于是用UTF-16擴展UCS-2。在BMP區域內的一片連續空間(U+D800~U+DFFF)的碼位區段是永久保留不映射到字符,因此UTF-16利用保留下來的0xD800-0xDFFF區段的碼位來對輔助平面的字符的碼位進行編碼。 所以,utf-16能表示的范圍最大能到U+10FFFF,包含1個基本平面(BMP)和16個輔助平面。? ? ?理論上UCS-4編碼范圍能達到U+7FFFFFFF,但是因為unicode和iso達成共識,只會用17個平面內的字符,所以UTF-32是UCS-4的子集。但是UTF-16是定長的編碼,和UCS-4無論實現和編碼都是基本一樣的。當前,Unicode深入人心,且UTF-8大行其道,UCS編碼基本被等同于UTF-16,UTF-32了,所以目前UCS基本談出人們的視野中。(Windows NT用的就是UCS-2)
UTF-8
? ??UTF-8就是在互聯網上使用最廣的一種unicode的實現方式。其他實現方式還包括UTF-16和UTF-32,不過在互聯網上基本不用。UTF-8是Unicode即(UCS)的實現方式之一。?
????UTF(UCS transformation format)?代表“通用字符集轉換格式”。
????????
????????UTF-8最大的一個特點,就是它是一種變長的編碼方式。它可以使用1~4個字節表示一個符號,根據不同的符號而變化字節長度。
? ??UTF-8的編碼規則很簡單,只有二條:?
????????1)對于單字節的符號,字節的第一位設為0,后面7位為這個符號的unicode碼。因此對于英語字母,UTF-8編碼和ASCII碼是相同的。?????????2)對于n字節的符號(n>1),第一個字節的前n位都設為1,第n+1位設為0,后面字節的前兩位一律設為10。剩下的沒有提及的二進制位,全部為這個符號的unicode碼。?
????????下表總結了編碼規則,字母x表示可用編碼的位。?
????????Unicode符號范圍 | UTF-8編碼方式?
????????(十六進制) | (二進制)?
????????--------------------+---------------------------------------------?
????????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? ????? ??下面,還是以漢字“嚴”為例,演示如何實現UTF-8編碼。? ????????已知“嚴”的unicode是4E25(100111000100101),根據上表,可以發現4E25處在第三行的范圍內(0000 0800-0000 FFFF),因此“嚴”的UTF-8編碼需要三個字節,即格式是“1110xxxx 10xxxxxx 10xxxxxx”。然后,從“嚴”的最后一個二進制位開始,依次從后向前填入格式中的x,多出的位補0。這樣就得到了,“嚴”的UTF-8編碼是“11100100 10111000 10100101”,轉換成十六進制就是E4B8A5。
????????1)ANSI是默認的編碼方式。對于英文文件是ASCII編碼,對于簡體中文文件是GB2312編碼(只針對Windows簡體中文版,如果是繁體中文版會采用Big5碼)。?
? ? ? ??2)Unicode編碼指的是UCS-2編碼方式,即直接用兩個字節存入字符的Unicode碼。這個選項用的little endian格式。?
????????3)Unicode big endian編碼與上一個選項相對應。我在下一節會解釋little endian和big endian的涵義。?
????????4)UTF-8編碼,也就是上一節談到的編碼方法。?
????????選擇完”編碼方式“后,點擊”保存“按鈕,文件的編碼方式就立刻轉換好了。?
????? ?? Little endian和Big endian?的區別 ???????? 上一節已經提到,Unicode碼可以采用UCS-2格式直接存儲。以漢字”嚴“為例,Unicode碼是4E25,需要用兩個字節存儲,一個字節是4E,另一個字節是25。存儲的時候,4E在前,25在后,就是Big endian方式;25在前,4E在后,就是Little endian方式。?
????????這兩個古怪的名稱來自英國作家斯威夫特的《格列佛游記》。在該書中,小人國里爆發了內戰,戰爭起因是人們爭論,吃雞蛋時究竟是從大頭(Big-Endian)敲開還是從小頭(Little-Endian)敲開。為了這件事情,前后爆發了六次戰爭,一個皇帝送了命,另一個皇帝丟了王位。?
????????因此,第一個字節在前,就是”大頭方式“(Big endian),第二個字節在前就是”小頭方式“(Little endian)。? ????????那么很自然的,就會出現一個問題:計算機怎么知道某一個文件到底采用哪一種方式編碼?Unicode規范中定義,每一個文件的最前面分別加入一個表示編碼順序的字符,這個字符的名字叫做”零寬度非換行空格“(ZERO WIDTH NO-BREAK SPACE),用FEFF表示。這正好是兩個字節,而且FF比FE大1。?如果一個文本文件的頭兩個字節是FE FF,就表示該文件采用大頭方式;如果頭兩個字節是FF FE,就表示該文件采用小頭方式。? ????????
????? ?? 打開”記事本“程序Notepad.exe,新建一個文本文件,內容就是一個”嚴“字,依次采用ANSI,Unicode,Unicode big endian 和 UTF-8編碼方式保存。 然后,用文本編輯軟件UltraEdit中的”十六進制功能“,觀察該文件的內部編碼方式。?
1)ANSI:文件的編碼就是兩個字節“D1 CF”,這正是“嚴”的GB2312編碼,這也暗示GB2312是采用大頭方式存儲的。? 2)Unicode:編碼是四個字節“FF FE 25 4E”,其中“FF FE”表明是小頭方式存儲,真正的編碼是4E25。? 3)Unicode big endian:編碼是四個字節“FE FF 4E 25”,其中“FE FF”表明是大頭方式存儲。? 4)UTF-8:編碼是六個字節“EF BB BF E4 B8 A5”,前三個字節“EF BB BF”表示這是UTF-8編碼,后三個“E4B8A5”就是“嚴”的具體編碼,它的存儲順序與編碼順序是一致的。
GB2312-80國家標準?——《信息交換用漢字編碼字符集--基本集》 1980年
????????1980年頒布了《信息交換用漢字編碼字符集—基本集》的國標交換碼,國家標準號為:GB2312-80,選入了6763個漢字,分為兩級,一級字庫中有3755個,是常用漢字,二級字庫中有3008個,是次常用漢字;還選入了682個字符,包含有數字、一般符號、拉丁字母、日本假名、希臘字母、俄文字母、拼音符號、注音字母等。以前我國大陸的各種中文DOS版本、Windows3.1 /3.2版本,裝入的字庫都是國標一二級字庫。
《GB2312-80》對 7445 個圖形字符作了二進制數編碼。
GB2312 也是ANSI編碼里的一種,對ANSI編碼最初始的ASCII編碼進行擴充,為了滿足國內在計算機中使用漢字的需要,中國國家標準總局發布了一系列的漢字字符集國家標準編碼,統稱為GB碼,或國標碼。其中最有影響的是于1980年發布的《信息交換用漢字編碼字符集?基本集》,標準號為GB 2312-1980,因其使用非常普遍,也常被通稱為國標碼。GB2312編碼通行于我國內地;新加坡等地也采用此編碼。幾乎所有的中文系統和國際化的軟件都支持GB 2312。 GB 2312是一個簡體中文字符集,由6763個常用漢字和682個全角的非漢字字符組成。其中漢字根據使用的頻率分為兩級。一級漢字3755個,二級漢字3008個。由于字符數量比較大,GB2312采用了二維矩陣編碼法對所有字符進行編碼。首先構造一個94行94列的方陣,對每一行稱為一個“區”,每一列稱為一個“位”,然后將所有字符依照下表的規律填寫到方陣中。這樣所有的字符在方陣中都有一個唯一的位置,這個位置可以用區號、位號合成表示,稱為字符的區位碼。如第一個漢字“啊”出現在第16區的第1位上,其區位碼為1601。因為區位碼同字符的位置是完全對應的,因此區位碼同字符之間也是一一對應的。這樣所有的字符都可通過其區位碼轉換為數字編碼信息。
BIG5?——《大五碼》?1984年? ? ???
????????BIG-5碼是通行于臺灣、香港地區的一個繁體字編碼方案,俗稱“大五碼”。地區標準號為:CNS11643,這就是人們講的BIG-5碼。
????????BIG-5碼收錄漢字13053個,分為常用字和次常用字兩部分,各部分中的漢字按筆畫/部首排列。其中常用字5401個,包括臺灣教育管理部門頒布的《常用漢字標準字體表》中的全部漢字4808個,臺灣中小學教科書常用字587個,異體字6個;次常用字7652個,包括臺灣教育管理部門頒布的《次常用漢字標準字體表》的全部漢字6341個,《罕用漢字標準字體表》中使用頻率較高的字1311個。
BIG-5碼的編碼范圍是 0x8140~0xFE7E、0x81A1~0xFEFE,其中 0xA140~0xA17E、0xA1A1~0xA1FE 是圖形符號區,0xA440~0xF97E、0xA4A1~0xF9FE 是漢字區。
ISO10646.1國際標準?—— 《通用多八位編碼字符集
(Universal Character Set, UCS) 》?1993年????國際標準化組織為了將世界各民族的文字進行統一編碼,制定了UCS標準。
國
際標準ISO10646.1-1993定義了通用八位編碼字符集(Universal Character Set, UCS),用于世界上各種語言的書面形式以及附加符號的表示、傳輸、交換、處理、存儲、輸入及顯現。 UCS是所有其它字符集標準的一個超集,它保證也其它字符集雙向兼容,即編碼間相互轉換不會丟失任何信息。UCS字符集U+0000到U+007F與US-ASCII是一致的。
????1. UCS 的總體結構
????????UCS 編碼字符集的總體結構是一個四維編碼空間,它包含 00 ~ 7F 共 128 個三維組,每一個三維組中包含 00 ~ FF 共 256 個二維平面,每一個二維平面包含 00 ~ FF 共 256 個一維行,每行共 256 個字位(00 ~ FF),每個字位用一個字節二進制數表示。因此在 UCS 中每一個字符用 4 個二進制數編碼,以確定每個字符在編碼空間的組、平面、行和字位。上述四個 8 位二進制數編碼形式稱為 UCS 的四八位正則形式,記作?UCS-4。
????2. 基本多文種平面
????????在UCS 編碼空間中 00組的 00平面稱為基本多文種平面。在此平面包含了字母文字、音節文字和表意文字中通常使用的字符以及各種符號和數字。
基本多文種平面的組編碼為 00H。UCS 規定當正則形式的組、平面編碼為 00H 時可以省略,因此安排在基本多文種平面上的字符可用兩個字節的二進制數來表示,形成雙八位編碼字符集,記作?UCS-2。
????????基本多文種平面分成 A、I、O、R 四個區。
????????A 區:代碼位置從 0000 ~ 4DFF,共 19903 個字位。此區用于字母文字、音節文字以及各種符號的編碼,其中 0000 ~ 001F 和 007E ~ 009F 保留用于控制字符。
????????I 區:代碼位置從 4E00 ~ 9FFF,共 20992 個字位。此區用于中、日、韓()統一的表意文字,即中國、日本、韓國等三國漢字的編碼。
????????O 區:代碼位置從 A000 ~ DFFF,共 16384 個字位。此區目前未用,留作未來的標準化。
????????R 區:代碼位置從 E000 ~ FFFD,共 8190 個字位。此區是限制使用區,用于專用字符、變形顯現形式和兼容字符的編碼。
????3. CJK 統一漢字的編碼
????????在 I 區統一編碼的漢字共 20902 個,按部首—比畫排序。其中中國用漢字約 17000 個,源字集是 GB 基本集簡化字,第一、三、五輔助集繁體字,現代漢語通用字表,郵電通信字符集,臺灣地區的 CNS11643 《通用漢字標準交換碼》,此外還吸收了香港用字 58 個,延邊地區朝鮮族使用的“吏讀”字 92 個。CJK 統一漢字編碼字符集中日本用漢字和韓國用漢字源字集分別為日、韓兩國的有關標準。
? ??4.?CJK-擴展A?
????????國際標準化組織在 ISO10646-2000 的基本平面(BMP 或者 Unicode 3.0, 下簡稱 Unicode)編入了27,564 漢字(U+4E00~U+9FFF以及U+3400~U+4DFF),既是2000年3月在GB18030頒布時所建議支持的字匯。其中U+3400~U+4DFF部分的6582個漢字又稱為CJK-擴展A。
同時國際標準化組織還在ISO10646-2000 的第二平面擴展了42,711漢字(又稱為CJK-擴展B)。該42,711 漢字的編碼表已基本確定,盡管不排除未來微小變動的可能性。也就是說,到目前為止Unicode已編碼的漢字達七萬多字。
????5.?CJK-擴展B
?????????
國際標準化組織還在ISO10646-2000 的第二平面擴展了42,711漢字(又稱為CJK-擴展B)
CJK-擴展B?的42,711漢字編排在ISO10646-2000的第二平面,所以編碼需要4個字節。為存取處理這些4字節字符,在Unicode 中引入了Surrogate 機制(在ISO10646-2000中命名為UTF-16)。根據這樣一種機制, 在Unicode中用兩個16位編碼就可以對ISO10646-2000 第二平面中的漢字進行存取。Microsoft 從Windows2000?(在Windows 98, Windows ME 及 Windows NT4 中沒有)開始對這樣一種機制提供支持。只要有相應的輸入法和字庫并且在應用程序中給予相應的支持,就應該能夠輸入顯示上述提到的漢字。但是,要想得到對Surrogate全面的支持,用戶需先下載并安裝Surrogate Package (?Surrogate支持包?)。
支持CJK-擴展B漢字顯示的字體:
????1、簡體中文版Microsoft Office XP及更高版本附帶了宋體-超大字符集中文字體?,支持上面提到的全部27,564個漢字以及在第二平面中(42,711)選出的36,862個在中國大陸、香港特別行政區(以及部分臺灣地區)使用的漢字。因此包括西文等常用字符在內,宋體-方正超大字符集共包括65,531個字符。換言之,它支持CJK-擴展A中的全部漢字和CJK-擴展B中的部分漢字。
????2、繁體中文版Microsoft Office XP及更高版本則提供了支持超大字符集的細明體(MingLiU Ext-B?與?PMingLiU Ext-B),可以從已裝有Office的電腦中單獨找到該字體文件,復制到本機Windows系統下的Fonts文件夾中即可。需要注意的是,此字體全面支持CJK-擴展B中的42711字,但不支持CJK-擴展A中的6582字。??
????3、海峰五筆UNICODE超大字符集字體支持包:完美結合了大陸與港臺的數種主流字體,支持GBK、GB-18030、CJK-B各大字符集內全部簡、繁體漢字的顯示, 通用于Windows 98/NT/2000/ME/XP/2003系統。安裝此包之后,用宋體即可顯示任何漢字。
GB13000.1國家標準???——《CJK?統一漢字編碼字符集》即GBK(“國家標準擴展”的拼音縮寫)
1993年? ??????國
家標準 GB13000.1 是完全等同于國際標準 ISO10646.1,國
際標準化組織為了將世界各民族的文字進行統一編碼,制定了UCS標準。根據這一標準,中、日、韓三國共同制定了《CJK統一漢字編碼字符集》,其國際標準號為:ISO/IEC10646,國家標準號為:GB13000-90,該漢字編碼字符集就是通常人們所說的大字符集,它編入了20902個漢字,收集了大陸一二級字庫中的簡體字,臺灣《通用漢字標準交換碼》中的繁體字,58個香港特別用字和92個延邊地區朝鮮族“吏讀”字,甚至涵蓋了日文與韓文中的通用漢字,滿足了方方面面的需要。Windows95/98/NT/2000中都裝入了大字符集漢字庫,人們一般稱它為GBK(“國家標準擴展”的拼音縮寫)。
????????漢字擴展內碼規范--GBK 的目的是解決漢字收字不足、簡繁同平面共存、簡化代碼體系間轉換等漢字信息交換的瓶頸問題,并在保持已有應用軟件兼容性的前提下,向最終的國際統一雙字節字符集標準 ISO10646.1 邁進。
????????1.擴展的漢字內碼規范的原則
????? ? ? ? ??與 《信息交換用漢字編碼字符集--基本集》即國家標準 的內碼體系標準完全兼容。
? ? ? ? ? ? ? 在字匯一級支持 ISO 10466.1/《CJK統一漢字編碼字符集》即國家標準 的全部 ?漢字。
? ? ? ? ? ? ? 非漢字符號同時涵蓋大部分常用的 非漢字符號。
????????2.規范的名稱與簡稱
????? ? ? ? ??中文名稱:漢字內碼規范
????? ? ? ? ??英文名稱:Chinese Internal Code Specification
????? ? ? ? ??簡稱: GBK ( K 是“擴展”的漢語拼音第一個字母)
????????3.規范的內容
???? ? ? ? ???適用范圍:
作為非 UCS (ISO 10646) 體系的代碼頁(Code Page),適用于中文信息的處理、交換、存儲、顯現、輸入和輸出。
GB18030-2000國家標準??——《信息交換用漢字編碼字符集基本集的擴充》2000年
????????2000年3月,國家信息產業部和質量技術監督局在北京聯合發布了《信息技術和信息交換用漢字編碼字符集、基本集的擴充》,國家標準號為:GB18030-2000,收錄了27000多個漢字,還收錄了藏、蒙、維等主要少數民族的文字,該標準于2000年12月31日強制執行。 GB 18030-2000 作為 GBK for Unicode 3.0 的更新而誕生,并且 作為GB2312-1980《信息交換用漢字編碼字符集 基本集》的擴展,向下兼容
GB18030 編碼是一二四字節變長編碼:一字節部分從 0x0~0x7F 與ASCII 編碼兼容。二字節部分, 首字節從 0x81~0xFE, 尾字節從0x40~0x7E 以及0x80~0xFE,與 GBK標準基本兼容。四字節部分, 第一字節從 0x81~0xFE, 第二字節從 0x30~0x39, 第三和第四字節的范圍和前兩個字節分別相同。四字節部分覆蓋了從 0x0080 開始, 除去二字節部分已經覆蓋的所有Unicode3.0碼位。也就是說,?GB18030 編碼在碼位空間上做到了與Unicode 標準一一對應,GB18030是我國繼GB2312-1980和GB13000-1993之后最重要的漢字編碼標準,是未來我國計算機系統必須遵循的基礎性標準之一。
??Base64編碼
這是歷史原因造成的(認為只有美國會使用電子郵件?)。因為一個英文字母使用ASCII編碼來存儲,占存儲器的1個字節(8位),實際上只用了7位2進制來存儲,第一位并沒有使用,設置為0,所以,這樣的系統認為凡是第一位是1的字節都是錯誤的。而有的編碼方案(比如GB2312)不但使用多個字節編碼一個字符,并且第一位經常是1,于是郵件系統就把1換成0,這樣收到郵件的人就會發現郵件亂碼。 為了能讓郵件系統正常的收發信件,就需要把由其他編碼存儲的符號轉換成ASCII碼來傳輸。比如,在一端發送GB2312編碼->根據Base64規則->轉換成ASCII碼,接收端收到ASCII碼->根據Base64規則->還原到GB2312編碼。轉載于:https://my.oschina.net/yuanwofei/blog/168528
總結
以上是生活随笔為你收集整理的字符集,字体,编码,代码页,输入法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: redis php 性能测试工具,red
- 下一篇: vi编辑器基本命令(简略)