区位码,国标码,交换码,内码,外码
轉自:https://blog.csdn.net/itplus/article/details/15341009
?
GB2312 是基于區位碼設計的,在區位碼的區號和位號上分別加上 A0H 就得到了 GB2312 編碼。這里第一次提到了“區位碼”,我就連帶把下面這幾個讓人摸不到頭腦的 XX 碼一鍋端了吧:
區位碼,國標碼,交換碼,內碼,外碼
區位碼:就是把中文常用的符號,數字,漢字等分門別類進行編碼。區位碼把編碼表分為 94 個區,每個區對應 94 個位,每個位置就放一個字符(漢字,符號,數字都屬于字符)。這樣每個字符的區號和位號組合起來就成為該漢字的區位碼。區位碼一般用 10 進制數來表示,如 4907 就表示 49 區 7 位,對應的字符是“學”。區位碼中 01-09 區是符號、數字區,16-87 區是漢字區,10-15 和 88-94 是未定義的空白區。它將收錄的漢字分成兩級:第一級是常用漢字計 3755 個,置于 16-55 區,按漢語拼音字母/筆形順序排列;第二級漢字是次常用漢字計 3008 個,置于 56-87 區,按部首/筆畫順序排列。在網上搜索“區位碼查詢系統”可以很方便的找到漢字和對應區位碼轉換的工具。為了避免廣告嫌疑和死鏈,這里就不舉例了。
國標碼:?區位碼無法用于漢字通信,因為它可能與通信使用的控制碼(00H~1FH)(即 0~31,還記得 ASCII 碼特殊字符的范圍嗎?)發生沖突。于是 ISO2022 規定每個漢字的區號和位號必須分別加上 32(即二進制數 00100000,16 進制 20H),得到對應的國標交換碼,簡稱國標碼,交換碼,因此,“學”字的國標交換碼計算為:
| 1 2 3 4 | 00110001 00000111 + 00100000 00100000 ------------------- 01010001 00100111 |
用十六進制數表示即為 5127H。
交換碼:即國標交換碼的簡稱,等同上面說的國標碼。
內碼:由于文本中通?;旌鲜褂脻h字和西文字符,漢字信息如果不予以特別標識,就會與單字節的 ASCII 碼混淆。此問題的解決方法之一是將一個漢字看成是兩個擴展 ASCII碼,使表示 GB2312 漢字的兩個字節的最高位都為 1。即國標碼加上 128(即二進制數 10000000,16 進制 80H)這種高位為 1 的雙字節漢字編碼即為 GB2312 漢字的機內碼,簡稱為內碼。20H + 80H = A0H。這也就是常說的在區位碼的區號和位號上分別加上 A0H 就得到了 GB2312 編碼的由來。
| 1 2 3 4 | ??00110001?00000111 + 10100000 10100000 ------------------- 11010001?10100111 |
用十六進制數表示即為 D1A7H。
外碼:機外碼的簡稱,就是漢字輸入碼,是為了通過鍵盤字符把漢字輸入計算機而設計的一種編碼。 英文輸入時,相輸入什么字符便按什么鍵,外碼和內碼一致。漢字輸入時,可能要按幾個鍵才能輸入一個漢字。 漢字輸入方案有成百上千個,但是這千差萬別的外碼輸入進計算機后都會轉換成統一的內碼。
最后總結一下上面的概念。中國國家標準總局把中文常用字符編碼為 94 個區,每個區對應 94 個位,每個字符的區號和位號組合起來就是該字符的區位碼, 區位碼用10進制數來表示,如 4907 就表示 49 區 7 位,對應的字符是“學”。 由于區位碼的取值范圍與通信使用的控制碼(00H~1FH)(即 0~31)發生沖突。每個漢字的區號和位號分別加上32(即 16 進制 20H)得到國標碼,交換碼。“學”的國標碼為 5127H。由于文本中通常混合使用漢字和西文字符,為了讓漢字信息不會與單字節的 ASCII 碼混淆,將一個漢字看成是兩個擴展 ASCII 碼,即漢字的兩個字節的最高位置為 1,得到的編碼為 GB2312 漢字的內碼?!皩W”的內碼為 D1A7H。無論你使用什么輸入法,通過什么樣的按鍵組合把“學”輸入計算機,“學”在使用 GB2312(以及兼容 GB2312)編碼的計算機里的內碼都是 D1A7H。
總結
以上是生活随笔為你收集整理的区位码,国标码,交换码,内码,外码的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 工具篇:金蝶K3工具下载
- 下一篇: 汉字区位码---非常浅显的知识点