中文字符集與字元編碼的基礎知識
字元是各種文字和符號的總稱,包括各國家文字、標點符號、圖形符號、數字等。字符集是多個字元的集合,字符集種類較多,每個字符集包含的字元個數不同,常見字符集名稱:ASCII字符集、GB2312字符集、BIG5字符集、 GB 18030字符集、Unicode字符集等。計算機要準確的處理各種字符集文字,需要進行字元編碼,以便計算機能夠識別和儲存各種文字。
中文文字數目大,而且還分為簡體中文和繁體中文兩種不同書寫規則的文字,而計算機最初是按英語單位元組字元設計的,因此,對中文字元進行編碼,是中文資訊交流的技術基礎。本文將按照字符集的時間順序討論幾種典型的字符集,選取幾種代表性的中文字符集,研究歷史由來、特點、技術特徵。
ASCII 字符集
1.名稱的由來
ASCII(American Standard Code for Information Interchange,美國資訊互換標準程式碼)是基於羅馬字母表的一套電腦編碼系統。
2.特點
它主要用於顯示現代英語和其他西歐語言。它是現今最通用的單位元組編碼系統,並等同於國際標準ISO 646。
3.包含內容
控制字元:Enter鍵、退格、換行鍵等。
可顯示字元:英文大小寫字元、阿拉伯數字和西文符號
4.技術特徵
7位(bits)表示一個字元,共128字元
5.ASCII擴充套件字符集
7位編碼的字符集只能支援128個字元,為了表示更多的歐洲常用字元對ASCII進行了擴充套件,ASCII擴充套件字符集使用8位(bits)表示一個字元,共256字元。
ASCII擴充套件字符集比ASCII字符集擴充出來的符號包括表格符號、計算符號、希臘字母和特殊的拉丁符號。
GB2312 字符集
1.名稱的由來
GB2312又稱為GB2312-80字符集,全稱為《資訊交換用漢字編碼字符集·基本集》,由原中國國家標準總局釋出,1981年5月1日實施。
2.特點
GB2312是中國國家標準的簡體中文字符集。它所收錄的漢字已經覆蓋99.75%的使用頻率,基本滿足了漢字的計算機處理需要。在中國大陸和新加坡獲廣泛使用。
3.包含內容
GB2312收錄簡化漢字及一般符號、序號、數字、拉丁字母、日文假名、希臘字母、俄文字母、漢語拼音符號、漢語注音字母,共 7445 個圖形字元。其中包括6763個漢字,其中一級漢字3755個,二級漢字3008個;包括拉丁字母、希臘字母、日文平假名及片假名字母、俄語西裡爾字母在內的682個全形字元。
4.技術特徵
(1)分割槽表示:
GB2312中對所收漢字進行了“分割槽”處理,每區含有94個漢字/符號。這種表示方式也稱為區位碼。
各區包含的字元如下:01-09區為特殊符號;16-55區為一級漢字,按拼音排序;56-87區為二級漢字,按部首/筆畫排序;10-15區及88-94區則未有編碼。
(2)雙位元組表示
兩個位元組中前面的位元組為第一位元組,後面的位元組為第二位元組。習慣上稱第一位元組為“高位元組” ,而稱第二位元組為“低位元組”。
“高位位元組”使用了0xA1-0xF7(把01-87區的區號加上0xA0),“低位位元組”使用了0xA1-0xFE(把01-94加上0xA0)。
5.編碼舉例
以GB2312字符集的第一個漢字“啊”字為例,它的區號16,位號01,則區位碼是1601,在大多數計算機程式中,高位元組和低位元組分別加0xA0得到程式的漢字處理編碼0xB0A1。計算公式是:0xB0=0xA0+16, 0xA1=0xA0+1。
BIG5 字符集
1.名稱的由來
又稱大五碼或五大碼,1984年由臺灣財團法人資訊工業策進會和五間軟體公司巨集碁 (Acer)、神通 (MiTAC)、佳佳、零壹 (Zero One)、大眾 (FIC)創立,故稱大五碼。
Big5碼的產生,是因為當時臺灣不同廠商各自推出不同的編碼,如倚天碼、IBM PS55、王安碼等,彼此不能相容;另一方面,臺灣政府當時尚未推出官方的漢字編碼,而中國大陸的GB2312編碼亦未有收錄繁體中文字。
2.特點
Big5字符集共收錄13,053箇中文字,該字符集在台灣使用。耐人尋味的是該字符集重複地收錄了兩個相同的字:“兀”(0xA461及0xC94A)、“嗀”(0xDCD1及0xDDFC)。
3.字元編碼方法
Big5碼使用了雙位元組儲存方法,以兩個位元組來編碼一個字。第一個位元組稱為“高位位元組”,第二個位元組稱為“低位位元組”。高位位元組的編碼範圍0xA1-0xF9,低位位元組的編碼範圍0x40-0x7E及0xA1-0xFE。
各編碼範圍對應的字元型別如下:0xA140-0xA3BF為標點符號、希臘字母及特殊符號,另外於0xA259-0xA261,存放了雙音節度量衡單位用字:兙兛兞兝兡兣嗧瓩糎;0xA440-0xC67E為常用漢字,先按筆劃再按部首排序;0xC940-0xF9D5為次常用漢字,亦是先按筆劃再按部首排序。
4.Big5 的侷限性
儘管Big5碼內包含一萬多個字元,但是沒有考慮社會上流通的人名、地名用字、方言用字、化學及生物科等用字,沒有包含日文平假名及片假名字母。
例如臺灣視“著”為“著”的異體字,故沒有收錄“著”字。康熙字典中的一些部首用字(如“亠”、“疒”、“辵”、“癶”等)、常見的人名用字(如“堃”、“煊”、“栢”、“喆”等) 也沒有收錄到Big5之中。
GB18030 字符集
1.名稱的由來
GB 18030的全稱是GB18030-2000《資訊交換用漢字編碼字符集基本集的擴充》,是我國政府於2000年3月17日釋出的新的漢字編碼國家標準,2001年8月31日後在中國市場上釋出的軟體必須符合本標準
2.特點
GB 18030字符集標準的出臺經過廣泛參與和論證,來自國內外知名資訊科技行業的公司,資訊產業部和原國家質量技術監督局聯合實施。
GB 18030字符集標準解決漢字、日文假名、朝鮮語和中國少數民族文字組成的大字符集計算機編碼問題。該標準的字元總編碼空間超過150萬個編碼位,收錄了27484個漢字,覆蓋中文、日文、朝鮮語和中國少數民族文字。滿足中國大陸、香港、臺灣、日本和韓國等東亞地區資訊交換多文種、大字量、多用途、統一編碼格式的要求。並且與Unicode 3.0版本相容,填補Unicode擴充套件字元字彙“統一漢字擴充套件A”的內容。並且與以前的國家字元編碼標準(GB2312,GB13000.1)相容。
3.編碼方法
GB 18030標準採用單位元組、雙位元組和四位元組三種方式對字元編碼。單位元組部分使用0×00至0×7F碼(對應於ASCII碼的相應碼)。雙位元組部分,首位元組碼從0×81至0×FE,尾位元組碼位分別是0×40至0×7E和0×80至0×FE。四位元組部分採用GB/T 11383未採用的0×30到0×39作為對雙位元組編碼擴充的字尾,這樣擴充的四位元組編碼,其範圍為0×81308130到0×FE39FE39。其中第一、三個位元組編碼碼位均為0×81至0×FE,第二、四個位元組編碼碼位均為0×30至0×39。
4.包含的內容
雙位元組部分收錄內容主要包括GB13000.1全部CJK漢字20902個、有關標點符號、表意文字描述符13個、增補的漢字和部首/構件80個、雙位元組編碼的歐元符號等。 四位元組部分收錄了上述雙位元組字元之外的,包括CJK統一漢字擴充A在內的GB 13000.1中的全部字元。
Unicode字符集
1.名稱的由來
Unicode字符集編碼是Universal Multiple-Octet Coded Character Set 通用多八位編碼字符集的簡稱,是由一個名為 Unicode 學術學會(Unicode Consortium)的機構制訂的字元編碼系統,支援現今世界各種不同語言的書面文字的交換、處理及顯示。該編碼於1990年開始研發,1994年正式公佈,最新版本是2005年3月31日的Unicode 4.1.0。
2.特徵
Unicode是一種在計算機上使用的字元編碼。它為每種語言中的每個字元設定了統一併且唯一的二進位制編碼,以滿足跨語言、跨平臺進行文字轉換、處理的要求。
3.編碼方法
Unicode 標準始終使用十六進位制數字,而且在書寫時在前面加上字首“U+”,例如字母“A”的編碼為 004116 和字元“€”的編碼為 20AC16。所以“A”的編碼書寫為“U+0041”。
4.UTF-8 編碼
UTF-8是Unicode的其中一個使用方式。 UTF是 Unicode Translation Format,即把Unicode轉做某種格式的意思。
UTF-8便於不同的計算機之間使用網路傳輸不同語言和編碼的文字,使得雙位元組的Unicode能夠在現存的處理單位元組的系統上正確傳輸。
UTF-8使用可變長度位元組來儲存 Unicode字元,例如ASCII字母繼續使用1位元組儲存,重音文字、希臘字母或西裡爾字母等使用2位元組來儲存,而常用的漢字就要使用3位元組。輔助平面字元則使用4位元組。
5.UTF-16 和 UTF-32 編碼
UTF-32、UTF-16 和 UTF-8 是 Unicode 標準的編碼字符集的字元編碼方案,UTF-16 使用一個或兩個未分配的 16 位程式碼單元的序列對 Unicode 程式碼點進行編碼;UTF-32 即將每一個 Unicode 程式碼點表示為相同值的 32 位整數。
中文文字數目大,而且還分為簡體中文和繁體中文兩種不同書寫規則的文字,而計算機最初是按英語單位元組字元設計的,因此,對中文字元進行編碼,是中文資訊交流的技術基礎。本文將按照字符集的時間順序討論幾種典型的字符集,選取幾種代表性的中文字符集,研究歷史由來、特點、技術特徵。
ASCII 字符集
1.名稱的由來
ASCII(American Standard Code for Information Interchange,美國資訊互換標準程式碼)是基於羅馬字母表的一套電腦編碼系統。
2.特點
它主要用於顯示現代英語和其他西歐語言。它是現今最通用的單位元組編碼系統,並等同於國際標準ISO 646。
3.包含內容
控制字元:Enter鍵、退格、換行鍵等。
可顯示字元:英文大小寫字元、阿拉伯數字和西文符號
4.技術特徵
7位(bits)表示一個字元,共128字元
5.ASCII擴充套件字符集
7位編碼的字符集只能支援128個字元,為了表示更多的歐洲常用字元對ASCII進行了擴充套件,ASCII擴充套件字符集使用8位(bits)表示一個字元,共256字元。
ASCII擴充套件字符集比ASCII字符集擴充出來的符號包括表格符號、計算符號、希臘字母和特殊的拉丁符號。
GB2312 字符集
1.名稱的由來
GB2312又稱為GB2312-80字符集,全稱為《資訊交換用漢字編碼字符集·基本集》,由原中國國家標準總局釋出,1981年5月1日實施。
2.特點
GB2312是中國國家標準的簡體中文字符集。它所收錄的漢字已經覆蓋99.75%的使用頻率,基本滿足了漢字的計算機處理需要。在中國大陸和新加坡獲廣泛使用。
3.包含內容
GB2312收錄簡化漢字及一般符號、序號、數字、拉丁字母、日文假名、希臘字母、俄文字母、漢語拼音符號、漢語注音字母,共 7445 個圖形字元。其中包括6763個漢字,其中一級漢字3755個,二級漢字3008個;包括拉丁字母、希臘字母、日文平假名及片假名字母、俄語西裡爾字母在內的682個全形字元。
4.技術特徵
(1)分割槽表示:
GB2312中對所收漢字進行了“分割槽”處理,每區含有94個漢字/符號。這種表示方式也稱為區位碼。
各區包含的字元如下:01-09區為特殊符號;16-55區為一級漢字,按拼音排序;56-87區為二級漢字,按部首/筆畫排序;10-15區及88-94區則未有編碼。
(2)雙位元組表示
兩個位元組中前面的位元組為第一位元組,後面的位元組為第二位元組。習慣上稱第一位元組為“高位元組” ,而稱第二位元組為“低位元組”。
“高位位元組”使用了0xA1-0xF7(把01-87區的區號加上0xA0),“低位位元組”使用了0xA1-0xFE(把01-94加上0xA0)。
5.編碼舉例
以GB2312字符集的第一個漢字“啊”字為例,它的區號16,位號01,則區位碼是1601,在大多數計算機程式中,高位元組和低位元組分別加0xA0得到程式的漢字處理編碼0xB0A1。計算公式是:0xB0=0xA0+16, 0xA1=0xA0+1。
BIG5 字符集
1.名稱的由來
又稱大五碼或五大碼,1984年由臺灣財團法人資訊工業策進會和五間軟體公司巨集碁 (Acer)、神通 (MiTAC)、佳佳、零壹 (Zero One)、大眾 (FIC)創立,故稱大五碼。
Big5碼的產生,是因為當時臺灣不同廠商各自推出不同的編碼,如倚天碼、IBM PS55、王安碼等,彼此不能相容;另一方面,臺灣政府當時尚未推出官方的漢字編碼,而中國大陸的GB2312編碼亦未有收錄繁體中文字。
2.特點
Big5字符集共收錄13,053箇中文字,該字符集在台灣使用。耐人尋味的是該字符集重複地收錄了兩個相同的字:“兀”(0xA461及0xC94A)、“嗀”(0xDCD1及0xDDFC)。
3.字元編碼方法
Big5碼使用了雙位元組儲存方法,以兩個位元組來編碼一個字。第一個位元組稱為“高位位元組”,第二個位元組稱為“低位位元組”。高位位元組的編碼範圍0xA1-0xF9,低位位元組的編碼範圍0x40-0x7E及0xA1-0xFE。
各編碼範圍對應的字元型別如下:0xA140-0xA3BF為標點符號、希臘字母及特殊符號,另外於0xA259-0xA261,存放了雙音節度量衡單位用字:兙兛兞兝兡兣嗧瓩糎;0xA440-0xC67E為常用漢字,先按筆劃再按部首排序;0xC940-0xF9D5為次常用漢字,亦是先按筆劃再按部首排序。
4.Big5 的侷限性
儘管Big5碼內包含一萬多個字元,但是沒有考慮社會上流通的人名、地名用字、方言用字、化學及生物科等用字,沒有包含日文平假名及片假名字母。
例如臺灣視“著”為“著”的異體字,故沒有收錄“著”字。康熙字典中的一些部首用字(如“亠”、“疒”、“辵”、“癶”等)、常見的人名用字(如“堃”、“煊”、“栢”、“喆”等) 也沒有收錄到Big5之中。
GB18030 字符集
1.名稱的由來
GB 18030的全稱是GB18030-2000《資訊交換用漢字編碼字符集基本集的擴充》,是我國政府於2000年3月17日釋出的新的漢字編碼國家標準,2001年8月31日後在中國市場上釋出的軟體必須符合本標準
2.特點
GB 18030字符集標準的出臺經過廣泛參與和論證,來自國內外知名資訊科技行業的公司,資訊產業部和原國家質量技術監督局聯合實施。
GB 18030字符集標準解決漢字、日文假名、朝鮮語和中國少數民族文字組成的大字符集計算機編碼問題。該標準的字元總編碼空間超過150萬個編碼位,收錄了27484個漢字,覆蓋中文、日文、朝鮮語和中國少數民族文字。滿足中國大陸、香港、臺灣、日本和韓國等東亞地區資訊交換多文種、大字量、多用途、統一編碼格式的要求。並且與Unicode 3.0版本相容,填補Unicode擴充套件字元字彙“統一漢字擴充套件A”的內容。並且與以前的國家字元編碼標準(GB2312,GB13000.1)相容。
3.編碼方法
GB 18030標準採用單位元組、雙位元組和四位元組三種方式對字元編碼。單位元組部分使用0×00至0×7F碼(對應於ASCII碼的相應碼)。雙位元組部分,首位元組碼從0×81至0×FE,尾位元組碼位分別是0×40至0×7E和0×80至0×FE。四位元組部分採用GB/T 11383未採用的0×30到0×39作為對雙位元組編碼擴充的字尾,這樣擴充的四位元組編碼,其範圍為0×81308130到0×FE39FE39。其中第一、三個位元組編碼碼位均為0×81至0×FE,第二、四個位元組編碼碼位均為0×30至0×39。
4.包含的內容
雙位元組部分收錄內容主要包括GB13000.1全部CJK漢字20902個、有關標點符號、表意文字描述符13個、增補的漢字和部首/構件80個、雙位元組編碼的歐元符號等。 四位元組部分收錄了上述雙位元組字元之外的,包括CJK統一漢字擴充A在內的GB 13000.1中的全部字元。
Unicode字符集
1.名稱的由來
Unicode字符集編碼是Universal Multiple-Octet Coded Character Set 通用多八位編碼字符集的簡稱,是由一個名為 Unicode 學術學會(Unicode Consortium)的機構制訂的字元編碼系統,支援現今世界各種不同語言的書面文字的交換、處理及顯示。該編碼於1990年開始研發,1994年正式公佈,最新版本是2005年3月31日的Unicode 4.1.0。
2.特徵
Unicode是一種在計算機上使用的字元編碼。它為每種語言中的每個字元設定了統一併且唯一的二進位制編碼,以滿足跨語言、跨平臺進行文字轉換、處理的要求。
3.編碼方法
Unicode 標準始終使用十六進位制數字,而且在書寫時在前面加上字首“U+”,例如字母“A”的編碼為 004116 和字元“€”的編碼為 20AC16。所以“A”的編碼書寫為“U+0041”。
4.UTF-8 編碼
UTF-8是Unicode的其中一個使用方式。 UTF是 Unicode Translation Format,即把Unicode轉做某種格式的意思。
UTF-8便於不同的計算機之間使用網路傳輸不同語言和編碼的文字,使得雙位元組的Unicode能夠在現存的處理單位元組的系統上正確傳輸。
UTF-8使用可變長度位元組來儲存 Unicode字元,例如ASCII字母繼續使用1位元組儲存,重音文字、希臘字母或西裡爾字母等使用2位元組來儲存,而常用的漢字就要使用3位元組。輔助平面字元則使用4位元組。
5.UTF-16 和 UTF-32 編碼
UTF-32、UTF-16 和 UTF-8 是 Unicode 標準的編碼字符集的字元編碼方案,UTF-16 使用一個或兩個未分配的 16 位程式碼單元的序列對 Unicode 程式碼點進行編碼;UTF-32 即將每一個 Unicode 程式碼點表示為相同值的 32 位整數。
Tags : ASCII GB2312 BIG5 Unicode UTF-8 漢字
相關文章
- C# 基礎知識:字元編碼、編碼轉換C#字元
- ORACLE字符集基礎知識Oracle
- 音訊編碼基礎知識音訊
- 字符集編碼知識詳解
- HTML 基礎知識(特殊字元的轉義)HTML字元
- corejava基礎知識(4)-萬用字元Java字元
- 字符集和字元編碼字元
- 字符集編碼(二):字元編碼模型字元模型
- web知識進階——字元編解碼Web字元
- Java字元編碼知識簡介(zt)Java字元
- shell指令碼的基礎知識指令碼
- 學習電腦編碼utf-8,ansi編碼的基礎知識等
- 前端開發中需要搞懂的字元編碼知識前端字元
- Cookie 與 Session 基礎知識CookieSession
- VCS基礎知識與概念
- IO基礎知識與概念
- 深入解析字符集和字元編碼字元
- 字符集和字元編碼詳解字元
- 【python系統學習16】編碼基礎知識Python
- JAVA與tomcat基礎知識JavaTomcat
- 【nls_character】中文字元亂碼問題與字符集的修改字元
- 字符集和字元編碼(Charset & Encoding)字元Encoding
- 【編測編學】MySQL資料庫基礎知識MySql資料庫
- 影像處理的基礎知識(9)——編輯與修飾影像(1)
- 影像處理的基礎知識(2)——建立與編輯選取(1)
- 影像處理的基礎知識(3)——建立與編輯選取(2)
- 基礎知識
- Jack整理的Win32彙編基礎知識Win32
- LUA的基礎知識
- PHP中文字元gbk編碼與UTF-8編碼的轉換PHP字元
- 程式設計師必須知道的字符集與字元編碼詳解程式設計師字元
- 【編測編學】MySQL資料庫基礎知識2MySql資料庫
- Linux基本知識與基礎命令Linux
- oracle密碼幾點基礎知識Oracle密碼
- AI 基礎知識AI
- Webpack 基礎知識Web
- Dart基礎知識Dart
- RabbitMQ基礎知識MQ