暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

字符集简单整理

济南小老虎 2024-02-01
45

背景

计算机发明之初是为了计算炮弹的弹道以及破解纳粹德国的密码.
一开始并没有各种业务用途.

随着70年代微软和苹果以及IBM的PC/mac事业的发展.
计算机开始进入寻常人家(当时依旧很贵)
普通用户使用计算机必须用大家熟悉的语言,而不是针孔二进制
这个时候,编码方式就开始了.
最开始就是美国人高的ASCII.
后来慢慢的增加了西欧的一些字符
很快 一个bytes 的 256个位置就不够用了.
阿拉伯文字以及东亚的象形文字 无法存储进来.

80年代时就开始有各种本地化的字符集出现.
93年左右 unicode 才创建, 此时微软和oracle的数据库以及微软的操作系统已经是世界级的应用
他们不可能等着unicode 才进行国际化/本地化的处理.

所以先发的数据库/操作系统,对UTF8其实的支持并不是很好.
但是开源的像是 mysql/pg 数据库 以及像是其他开源的项目,因为没有足够的人力物力进行本地化
那么unicode 就是他们最佳的选择.

所以开源数据库普通仅仅使用utf8, 但是商业数据库因为性能/兼容性 往往使用自建的字符集/排序规则


关于中文字符集

中国第一版字符集 GB2312  1980年发布的. 
当时有 6000 多个汉字, 据说支持了 97.5%的日常使用
但是很快就发现不够用的了.

然后 1993年左右开始发布 GB13000 标准,
就是比较常用的GBK/CP936的字符集相关. 汉字也进行了扩容.

但是到了2000年左右 互联网开发澎湃发展
GB13000也无法满足需求了. 此时就开始使用 GB18030的字符集.
他有 2000 2005 2016 2022 等多个版本.
支持的字符集越来越多, 并且尽可能的覆盖unicode对汉字的覆盖
并且是一个 1 2 4 三种长度的边长字符集.


网上的资料

GB2312编码
GB2312编码是第一个汉字编码国家标准,由中国国家标准总局1980年发布,198151日开始使用。
GB2312编码共收录汉字6763个,其中一级汉字3755个,二级汉字3008个。
同时,GB2312编码收录了包括拉丁字母、希腊字母、日文平假名及片假名字母、俄语西里尔字母在内的682个全角字符。
它使用2个字节编码,编码范围为A1A1~FEFE。其中首字节叫区,尾字节叫位。共A1~FE94个区,每个区包含A1~FE94个位。共94*94=8836个码位。

1~9区收录除汉字外的682个字符。
10-15区为空白区,没有使用。
16-55区收录3755个一级汉字,按拼音排序。
56-87区收录3008个二级汉字,按部首/笔画排序。
88-94区为空白区,没有使用。

GBK编码
GB2312支持的汉字太少。1995年的汉字扩展规范GBK1.0收录了21886个符号,它分为汉字区和图形符号区。
汉字区包括21003个字符。GBK中的K为汉语拼音扩的声母,即扩展的含义。
英文全称Chinese Internal Code Specification。GBK编码标准兼容GB2312。
GB2312基本满足了汉字的计算机处理需要,但对于人名、古汉语等方面出现的罕用字,GB2312不能处理,这导致了后来GBK及GB18030汉字字符集的出现。
GBK采用双字节表示,总体编码范围为8140-FEFE,首字节在81-FE之间,尾字节在40-FE之间,剔除xx7F一条线。总计23940个码位,共收入21886个汉字和图形符号.

GB18030编码
2000年,GB18030取代GBK1.0,正式国家标准。
它的主要特点是在GBK基础上增加了CJK统一汉字扩充A的汉字(GB18030-2000)。
后又在此基础上增加了CJK统一汉字扩充B的汉字(GB18030-2005)。
GB18030编码格式有单字节、双字节、四字节三种方案。其中单、双字节的编码和GBK完全兼容。
4字节的编码内容为CJK扩展A的6582个汉字。
最新的GB18030-2022 标准有汉字 87887

来源:https://blog.csdn.net/qq_23274715/article/details/104931433


关于微软和Oracle

微软的操作系统在中国地区默认使用CP936的page code 对应的就是GBK字符集. 
数据库一般采取 chinese_prc_ci_ai 也是对应CP936/GBK的字符集.

Oracle数据库也是使用 ZHS16GBK的字符集。

需要说明GBK字符集是一个定长的字符集。他的处理起来性能比较好
GB18030需要判断第二个字节是否在0x30和0x39之间来判断是否四字节的字符
会导致一定的性能衰退。


关于UTF8

免费开源的东西一般都是够用性质的
想要极致的性能体验还是需要商业的软件。

贵的东西除了贵没有别的缺点并且是仅次于领导/媳妇说的都对的之外的第二真理。


文章转载自济南小老虎,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论