字符编码2

最近的工作需要字符编码的转换(UTF8和GB2312转换),去年初步接触了字符编码知识,当时没弄的很清楚,学习完再总结一下。

1. GB2312编码

  • GB2312编码共收录汉字6763个,其中一级汉字3755个,二级汉字3008个。
  • GB2312编码包括拉丁、希腊、日文平假名及片假名字母、俄语、西里尔字母在内的682个全角字符。
  • GB2312编码共94个区,每区含有94个位,共8836个码位。
  • 01-09区收录除汉字外的682个字符。
  • 10-15区为空白区,没有使用。
  • 16-55区收录3755个一级汉字,按拼音排序。
  • 56-87区收录3008个二级汉字,按部首/笔画排序。
  • 88-94区为空白区,没有使用。
  • 字符集编码范围:A1A1-FEFE
  • 汉字编码范围:B0A1-F7FE,汉字第一字节0xB0-0xF7(对应区号:16-87),第二个字节0xA1-0xFE(对应位号:01-94)。

例如:

1.1 非汉字区位码:

01 0 1 2 3 4 5 6 7 8 9
0     、 。 · ˉ ˇ ¨ 〃 々
1 — ~ ‖ … ‘ ’ “ ” 〔 〕
2〈 〉《 》「 」『 』〖 〗
3【 】 ± × ÷ ∶ ∧ ∨ ∑ ∏
4 ∪ ∩ ∈ ∷ √ ⊥ ∥ ∠ ⌒ ⊙
5 ∫ ∮ ≡ ≌ ≈ ∽ ∝ ≠ ≮ ≯
6 ≤ ≥ ∞ ∵ ∴ ♂ ♀ ° ′ ″
7 ℃ $ ¤ ¢ £ ‰ § № ☆ ★
8 ○ ● ◎ ◇ ◆ □ ■ △ ▲ ※
9 → ← ↑ ↓ 〓

1.2 汉字区位码

啊-区位码为1601,表示成16进制为0x10 01,
对应的GB2312码为0x10 01+0xA0 A0 = 0xB0 A1

B0A1:啊,B0A2:阿,… B0FE:剥,B0A0、B0FF为空字符

16 0 1 2 3 4 5 6 7 8 9
0   啊 阿 埃 挨 哎 唉 哀 皑 癌
1 蔼 矮 艾 碍 爱 隘 鞍 氨 安 俺
2 按 暗 岸 胺 案 肮 昂 盎 凹 敖
3 熬 翱 袄 傲 奥 懊 澳 芭 捌 扒
4 叭 吧 笆 八 疤 巴 拔 跋 靶 把
5 耙 坝 霸 罢 爸 白 柏 百 摆 佰
6 败 拜 稗 斑 班 搬 扳 般 颁 板
7 版 扮 拌 伴 瓣 半 办 绊 邦 帮
8 梆 榜 膀 绑 棒 磅 蚌 镑 傍 谤
9 苞 胞 包 褒 剥

2. GBK编码

  • GBK 采用双字节表示,总体编码范围为 8140-FEFE,首字节在 81-FE 之间,尾字节在 40-FE 之间,剔除 xx7F 一条线。总计 23940 个码位,共收入 21886 个汉字和图形符号,其中汉字(包括部首和构件)21003 个,图形符号 883 个。
  • GBK 规范收录 ISO 10646.1 中的全部 CJK 汉字和符号,并有所补充。具体包括:
  1. GB 2312 中的全部汉字、非汉字符号;GB 13000.1 中的其他 CJK 汉字。
  2. 13 个汉字结构符。
  3. GB 12345 增补的 6 个拼音符号。

2.1. 汉字区

a. GB 2312 汉字区。即 GBK/2: B0A1-F7FE。收录 GB 2312 汉字 6763 个,按原 顺序排列。
b. GB 13000.1 扩充汉字区。包括:
(1) GBK/3: 8140-A0FE。收录 GB 13000.1 中的 CJK 汉字 6080 个。
(2) GBK/4: AA40-FEA0。收录 CJK 汉字和增补的汉字 8160 个。CJK 汉字在前,按 UCS 代码大小排列;增补的汉字(包括部首和构件)在后,按《康熙字典》的页码/字位排列。
(3) 汉字“〇”安排在图形符号区GBK/5:A996。

2.2图形符号区

a. GB 2312 非汉字符号区。即 GBK/1: A1A1-A9FE。其中除 GB 2312 的符号外,还有 10 个小写罗马数字和 GB 12345 增补的符号。计符号 717 个。
b. GB 13000.1 扩充非汉字区。即 GBK/5: A840-A9A0。BIG-5 非汉字符号、结构符和“〇”排列在此区。计符号 166 个。

2.3用户自定义区:

分为(1)(2)(3)三个小区:
(1) AAA1-AFFE,码位 564 个。
(2) F8A1-FEFE,码位 658 个。
(3) A140-A7A0,码位 672 个。
第(3)区尽管对用户开放,但限制使用,因为不排除未来在此区域增补新字符的可能性

例如:
81 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 侌 侎 侐 侒 侓 侕 侖 侘 侙 侚 侜 侞 侟 価 侢

82 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 傪 傫 傭 傮 傯 傰 傱 傳 傴 債 傶 傷 傸 傹 傼

83 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 凁 凂 凃 凅 凈 凊 凍 凎 凐 凒 凓 凔 凕 凖 凗

84 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 勷 勸 勻 勼 勽 匁 匂 匃 匄 匇 匉 匊 匋 匌 匎

3. UniCode

  • 基本汉字编码范围:4E00-9FA5,共20902字,为CJK 统一表意符号 。
  • 基本汉字补充编码范围:9FA6-9FEF,共74字,为CJK 统一表意符号 。
  • 扩展A编码范围:3400-4DBF,共6582字,为CJK 统一表意符号扩展 A 。
  • 其他略

4. GBK到UTF-8的转换

  • UTF-8和UniCode之间的转换有规律
  • GBK和UniCode之间的转换依靠查表
  • 转换表太大,以资源方式上传:链接: link.

引文:
[1] https://www.qqxiuzi.cn/zh/hanzi-gb2312-bianma.php
[2] https://www.qqxiuzi.cn/zh/hanzi-gbk-bianma.php
[3] https://www.qqxiuzi.cn/zh/hanzi-unicode-bianma.php

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值