编码的前世今生

最早的字符编码集是ascii,由一个字节表示,只用低7位。

之后又扩展了超过128个字符集由各个厂家推出,称为OEM字符集,标准繁多,不通用。但对于超过128字符的多字符编码集来说就不适用了。

多字符集以常见的中文字符集来说,GB2312属于双字节字符集编码(DBCS,Double Byte Character Set),涵盖了所有简体中文及一些其他符号;

GBK在GB2312的基础上加入了对繁体字的支持,这两个字符集都是以1到2两字节来表示。

不同ASCII衍生字符集的出现,让文档交流变得非常困难,因此各种组织都陆续进行了标准化流程。例如美国ANSI组织制定了ANSI标准字符编码(注意,我们现在通常说到ANSI编码,通常指的是平台的默认编码,例如英文操作系统中是ISO-8859-1,中文系统是GBK),ISO组织制定的各种ISO标准字符编码,还有各国也会制定一些国家标准字符集,例如中国的GBK,GB2312和GB18030。

虽然通过使用不同字符集,我们可以在一台机器上查阅不同语言的文档,但是我们仍然无法解决一个问题:在一份文档中显示所有字符。为了解决这个问题,我们需要一个全人类达成共识的巨大的字符集,这就是Unicode字符集。

Unicode字符集涵盖了目前人类使用的所有字符,并为每个字符进行统一编号,分配唯一的字符码(Code Point)。Unicode字符集将所有字符按照使用上的频繁度划分为17个层面(Plane),每个层面上有216=65536个字符码空间。

关于编码的知识,可见https://www.cnblogs.com/KevinYang/archive/2010/06/18/1760597.html

说点关键的

关于utf-8包含gb2312并不是说字符码就完全完全相等,因为utf-8使用变长字节编码,而gb2312始终使用两个字节来编码,只能说他们都包含某个汉字,但他们的字符码可能是不等。

可见https://social.msdn.microsoft.com/Forums/zh-CN/f656ec85-2cd0-4d6a-a207-fe30523cc5a4/12304325343072112305gb231219982utf832534307212130621035?forum=2212

posted @ 2020-06-28 14:14  njit-sam  阅读(240)  评论(0编辑  收藏  举报