日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

GBK 与GB2312 互查 区位码

發布時間:2023/12/14 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 GBK 与GB2312 互查 区位码 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

這兩天做了一個簡單的,GBK 與GB2312 互查 區位碼,方便有需要據GBK查GB2312,或者據GB2312查GBK的同學使用。

先把依據貼出來,
GB2312編碼是第一個漢字編碼國家標準,由中國國家標準總局1980年發布,1981年5月1日開始使用。
GB2312規定每個字符采用兩個字節表示,第一個字節為“高字節”,對應94個區;第二個字節為“低字節”,對應94個位。
GB2312編碼對所收錄字符進行了“分區”處理,共94個區,每區含有94個位,共8836個碼位。這種表示方式也稱為區位碼。

16 0 1 2 3 4 5 6 7 8 9
0   啊 阿 埃 挨 哎 唉 哀 皚 癌
1 藹 矮 艾 礙 愛 隘 鞍 氨 安 俺
2 按 暗 岸 胺 案 骯 昂 盎 凹 敖
3 熬 翱 襖 傲 奧 懊 澳 芭 捌 扒
4 叭 吧 笆 八 疤 巴 拔 跋 靶 把
5 耙 壩 霸 罷 爸 白 柏 百 擺 佰
6 敗 拜 稗 斑 班 搬 扳 般 頒 板
7 版 扮 拌 伴 瓣 半 辦 絆 邦 幫
8 梆 榜 膀 綁 棒 磅 蚌 鎊 傍 謗
9 苞 胞 包 褒 剝

舉例來說,“啊”字,它位于16區的01位,所以它的區位碼就是1601。
“艾”字,也位于16區,它的位碼是12,所以它的區位碼就是 1612.
再舉個例子,
16區的,80位是 梆,81位是 榜,82位是 膀,83位是 綁,84位是 棒,85位是 磅,86位是 蚌,87位是 鎊,88位是 傍,89位是 謗
漢字的位號是先行后列,
請注意,這里給大家粘出來的 GB2312 字符集的區位號是10進制的,
所以要和區位碼是 16 進制的 GBK 互查,就需要將 10 進制先轉換成 16 進制,
轉換規則是,將 10 進制 先轉換成 16 進制,然后,再加上 0xA0,就成了 16 進制的 GB2312 編碼。
高位碼(從16區開始到87區結束)10進制對應16進制,整理如下:


要查 GB2312 編碼的高字節(也就是區號),可以使用這個表,
“10進制對應16進制表”

十進 二進 十六進 十六進加 A0 十進 二進 十六進 十六進加 A0 16 0001 0000 1 0 B 0 53 0011 0101 3 5 D 5 17 0001 0001 1 1 B 1 54 0011 0110 3 6 D 6 18 0001 0010 1 2 B 2 55 0011 0111 3 7 D 7 19 0001 0011 1 3 B 3 56 0011 1000 3 8 D 8 20 0001 0100 1 4 B 4 57 0011 1001 3 9 D 9 21 0001 0101 1 5 B 5 58 0011 1010 3 A D 10 22 0001 0110 1 6 B 6 59 0011 1011 3 B D 11 23 0001 0111 1 7 B 7 60 0011 1100 3 C D 12 24 0001 1000 1 8 B 8 61 0011 1101 3 D D 13 25 0001 1001 1 9 B 9 62 0011 1110 3 E D 14 26 0001 1010 1 A B 10 63 0011 1111 3 F D 15 27 0001 1011 1 B B 11 64 0100 0000 4 0 E 0 28 0001 1100 1 C B 12 65 0100 0001 4 1 E 1 29 0001 1101 1 D B 13 66 0100 0010 4 2 E 2 30 0001 1110 1 E B 14 67 0100 0011 4 3 E 3 31 0001 1111 1 F B 15 68 0100 0100 4 4 E 4 32 0010 0000 2 0 C 0 69 0100 0101 4 5 E 5 33 0010 0001 2 1 C 1 70 0100 0110 4 6 E 6 34 0010 0010 2 2 C 2 71 0100 0111 4 7 E 7 35 0010 0011 2 3 C 3 72 0100 1000 4 8 E 8 36 0010 0100 2 4 C 4 73 0100 1001 4 9 E 9 37 0010 0101 2 5 C 5 74 0100 1010 4 A E 10 38 0010 0110 2 6 C 6 75 0100 1011 4 B E 11 39 0010 0111 2 7 C 7 76 0100 1100 4 C E 12 40 0010 1000 2 8 C 8 77 0100 1101 4 D E 13 41 0010 1001 2 9 C 9 78 0100 1110 4 E E 14 42 0010 1010 2 A C 10 79 0100 1111 4 F E 15 43 0010 1011 2 B C 11 80 0101 0000 5 0 F 0 44 0010 1100 2 C C 12 81 0101 0001 5 1 F 1 45 0010 1101 2 D C 13 82 0101 0010 5 2 F 2 46 0010 1110 2 E C 14 83 0101 0011 5 3 F 3 47 0010 1111 2 F C 15 84 0101 0100 5 4 F 4 48 0011 0000 3 0 D 0 85 0101 0101 5 5 F 5 49 0011 0001 3 1 D 1 86 0101 0110 5 6 F 6 50 0011 0010 3 2 D 2 87 0101 0111 5 7 F 7 51 0011 0011 3 3 D 3 88 0101 1000 5 8 F 8 未使用 52 0011 0100 3 4 D 4 89 0101 1001 5 9 F 9 未使用

還拿16區的 漢字舉例,
16 0 1 2 3 4 5 6 7 8 9
0   啊 阿 埃 挨 哎 唉 哀 皚 癌
1 藹 矮 艾 礙 愛 隘 鞍 氨 安 俺
2 按 暗 岸 胺 案 骯 昂 盎 凹 敖
3 熬 翱 襖 傲 奧 懊 澳 芭 捌 扒
4 叭 吧 笆 八 疤 巴 拔 跋 靶 把
5 耙 壩 霸 罷 爸 白 柏 百 擺 佰
6 敗 拜 稗 斑 班 搬 扳 般 頒 板
7 版 扮 拌 伴 瓣 半 辦 絆 邦 幫
8 梆 榜 膀 綁 棒 磅 蚌 鎊 傍 謗
9 苞 胞 包 褒 剝


“爸”位于 16 區,區號是 16,

使用上面提供的 高位碼(區號)的“10進制對應16進制表”,可查到,

十進 二進 十六進 16 0001 0000 1 0

區號16號:
十進制 值是: 16 ,其,二進制 值 是:0001 0000 ,十六進制 值是:1 0 ,
再根據GB2312 編碼的規則,再加上一個 A0,有

十六進制的 10 加上 十六進制的 A01 0 + A 0 ------B 0

所以,
區號 16 的 GB2312 編號是 B 0
所以 “爸” 字的 區號 十六進制值是: B 0

再查表可得
區號 87 的 GB2312 編號是 F 7

因此,GB2312 編碼中,漢字的區號的范圍是

16~8710進制表示) B0~F7(16進制表示)

16~87(10進制表示)中,每個區里的位號是相同的,都是從 00~99(十進制表示)
十進制和十六進制對應表,,整理如下,
“數字1~96十進制對應十六進制表”

1 0000 0001 0 1 17 0001 0001 1 1 33 0010 0001 2 1 49 0011 0001 3 1 65 0100 0001 4 1 81 0101 0001 5 1 2 0000 0010 0 2 18 0001 0010 1 2 34 0010 0010 2 2 50 0011 0010 3 2 66 0100 0010 4 2 82 0101 0010 5 2 3 0000 0011 0 3 19 0001 0011 1 3 35 0010 0011 2 3 51 0011 0011 3 3 67 0100 0011 4 3 83 0101 0011 5 3 4 0000 0100 0 4 20 0001 0100 1 4 36 0010 0100 2 4 52 0011 0100 3 4 68 0100 0100 4 4 84 0101 0100 5 4 5 0000 0101 0 5 21 0001 0101 1 5 37 0010 0101 2 5 53 0011 0101 3 5 69 0100 0101 4 5 85 0101 0101 5 5 6 0000 0110 0 6 22 0001 0110 1 6 38 0010 0110 2 6 54 0011 0110 3 6 70 0100 0110 4 6 86 0101 0110 5 6 7 0000 0111 0 7 23 0001 0111 1 7 39 0010 0111 2 7 55 0011 0111 3 7 71 0100 0111 4 7 87 0101 0111 5 7 8 0000 1000 0 8 24 0001 1000 1 8 40 0010 1000 2 8 56 0011 1000 3 8 72 0100 1000 4 8 88 0101 1000 5 8 9 0000 1001 0 9 25 0001 1001 1 9 41 0010 1001 2 9 57 0011 1001 3 9 73 0100 1001 4 9 89 0101 1001 5 9 10 0000 1010 0 A 26 0001 1010 1 A 42 0010 1010 2 A 58 0011 1010 3 A 74 0100 1010 4 A 90 0101 1010 5 A 11 0000 1011 0 B 27 0001 1011 1 B 43 0010 1011 2 B 59 0011 1011 3 B 75 0100 1011 4 B 91 0101 1011 5 B 12 0000 1100 0 C 28 0001 1100 1 C 44 0010 1100 2 C 60 0011 1100 3 C 76 0100 1100 4 C 92 0101 1100 5 C 13 0000 1101 0 D 29 0001 1101 1 D 45 0010 1101 2 D 61 0011 1101 3 D 77 0100 1101 4 D 93 0101 1101 5 D 14 0000 1110 0 E 30 0001 1110 1 E 46 0010 1110 2 E 62 0011 1110 3 E 78 0100 1110 4 E 94 0101 1110 5 E 15 0000 1111 0 F 31 0001 1111 1 F 47 0010 1111 2 F 63 0011 1111 3 F 79 0100 1111 4 F 95 0101 1111 5 F 16 0001 0000 1 0 32 0010 0000 2 0 48 0011 0000 3 0 64 0100 0000 4 0 80 0101 0000 5 0 96 0110 0000 6 0

按GB2312 編碼 規則,給所有的16進制的值都加上 A0 ,整理如下,
“GB2312 編碼,低位(位號)“十進制對應十六進制表”

1 0000 0001 A 1 17 0001 0001 B 1 33 0010 0001 C 1 49 0011 0001 D 1 65 0100 0001 E 1 81 0101 0001 F 1 2 0000 0010 A 2 18 0001 0010 B 2 34 0010 0010 C 2 50 0011 0010 D 2 66 0100 0010 E 2 82 0101 0010 F 2 3 0000 0011 A 3 19 0001 0011 B 3 35 0010 0011 C 3 51 0011 0011 D 3 67 0100 0011 E 3 83 0101 0011 F 3 4 0000 0100 A 4 20 0001 0100 B 4 36 0010 0100 C 4 52 0011 0100 D 4 68 0100 0100 E 4 84 0101 0100 F 4 5 0000 0101 A 5 21 0001 0101 B 5 37 0010 0101 C 5 53 0011 0101 D 5 69 0100 0101 E 5 85 0101 0101 F 5 6 0000 0110 A 6 22 0001 0110 B 6 38 0010 0110 C 6 54 0011 0110 D 6 70 0100 0110 E 6 86 0101 0110 F 6 7 0000 0111 A 7 23 0001 0111 B 7 39 0010 0111 C 7 55 0011 0111 D 7 71 0100 0111 E 7 87 0101 0111 F 7 8 0000 1000 A 8 24 0001 1000 B 8 40 0010 1000 C 8 56 0011 1000 D 8 72 0100 1000 E 8 88 0101 1000 F 8 9 0000 1001 A 9 25 0001 1001 B 9 41 0010 1001 C 9 57 0011 1001 D 9 73 0100 1001 E 9 89 0101 1001 F 9 10 0000 1010 A A 26 0001 1010 B A 42 0010 1010 C A 58 0011 1010 D A 74 0100 1010 E A 90 0101 1010 F A 11 0000 1011 A B 27 0001 1011 B B 43 0010 1011 C B 59 0011 1011 D B 75 0100 1011 E B 91 0101 1011 F B 12 0000 1100 A C 28 0001 1100 B C 44 0010 1100 C C 60 0011 1100 D C 76 0100 1100 E C 92 0101 1100 F C 13 0000 1101 A D 29 0001 1101 B D 45 0010 1101 C D 61 0011 1101 D D 77 0100 1101 E D 93 0101 1101 F D 14 0000 1110 A E 30 0001 1110 B E 46 0010 1110 C E 62 0011 1110 D E 78 0100 1110 E E 94 0101 1110 F E 15 0000 1111 A F 31 0001 1111 B F 47 0010 1111 C F 63 0011 1111 D F 79 0100 1111 E F 95 0101 1111 F F 16 0001 0000 B 0 32 0010 0000 C 0 48 0011 0000 D 0 64 0100 0000 E 0 80 0101 0000 F 0 96 0110 0000 溢出

還拿16區的 漢字舉例,


“爸”位于 16 區,位號是 54,查低位(位號)“十進制對應十六進制表”,可得,

所以,“爸”字的 低位(位號)是:D 6

加上之前我們查到的 “爸” 字的 區號(高位) 十六進制值是: B 0
得到,“爸”字的GB2312 編碼為: B 0 D 6

拿這個值,我們去GBK里查,看看能不能查到”爸“這個字,

GBK
B0 0 1 2 3 4 5 6 7 8 9 A B C D E F
4 癅 癆 癇 癈 癉 癊 癋 癎 癏 癐 癑 癒 癓 癕 癗 癘
5 癙 癚 癛 癝 癟 癠 癡 癢 癤 癥 癦 癧 癨 癩 癪 癬
6 癭 癮 癰 癱 癲 癳 癴 癵 癶 癷 癹 発 發 癿 皀 皁
7 皃 皅 皉 皊 皌 皍 皏 皐 皒 皔 皕 皗 皘 皚 皛
8 皜 皝 皞 皟 皠 皡 皢 皣 皥 皦 皧 皨 皩 皪 皫 皬
9 皭 皯 皰 皳 皵 皶 皷 皸 皹 皺 皻 皼 皽 皾 盀 盁
A 盃 啊 阿 埃 挨 哎 唉 哀 皚 癌 藹 矮 艾 礙 愛 隘
B 鞍 氨 安 俺 按 暗 岸 胺 案 骯 昂 盎 凹 敖 熬 翱
C 襖 傲 奧 懊 澳 芭 捌 扒 叭 吧 笆 八 疤 巴 拔 跋
D 靶 把 耙 壩 霸 罷 爸 白 柏 百 擺 佰 敗 拜 稗 斑
E 班 搬 扳 般 頒 板 版 扮 拌 伴 瓣 半 辦 絆 邦 幫
F 梆 榜 膀 綁 棒 磅 蚌 鎊 傍 謗 苞 胞 包 褒 剝

沒錯,能查到,巧了,GBK中”爸“字的編碼也是 B0D6,這說明,GB2312 包含在 GBK 中。


應該是這么個關系,
資料中也顯示:GBK編碼,是對GB2312編碼的擴展,收錄了GB 2312中的6763 個漢字,按原順序排列。
這就是說,我們按 GB2312 的十進制編碼表 查詢到 漢字的 10進制區位號后,先轉成 16進制數,然后再給區號和位號分別都加上 A0 后,得到的最終16進制形式的 區位號,就按這個號去 GBK 里查詢,能查到同一個字,

February the 25th 2022 Friday

總結

以上是生活随笔為你收集整理的GBK 与GB2312 互查 区位码的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。