[编码]从ASCLL到ANSI

目录:

    一.计算机如何将二进制转化为符号

    二.关于 ASCLL 编码标准

    三.关于 UTF-8 编码标准

        1.Unicode 简介

        2.UTF-8

    四.关于 GBK 编码标准

    五.关于 ANSI 编码标准


一、计算机如何从二进制转化为符号

    我们都知道,在计算机系统中,所有的数据都是以“0”和“1”来进行存储的,不论是汉字还是英文字符,亦或是其他什么语言,但也正因如此就引出了一个问题:如何用这些“0”和“1”来表示字符?

    最容易想到的做法就是将所有的字符分配一个二进制值,将字符与二进制值进行一个映射,就能够得到相应的字符了.事实上几乎所有的编码标准(除 ANSI)都是这样做的。


二、关于 ASCLL 编码标准

    ASCLL(美国信息交换标准代码),作为最开始的编码规范由美国 IBM 工程师 Bob bemer 所发明。它为26个英语字符以及常用的符号(如 ’/‘,’*‘) 还有一些特殊控制字符(如 回车 换行)分配了一个 ASCLL 值,具体如下图。

    

    

view.jpg

    作为定长编码,ASCLL 编码下每个字符的大小固定为一个字节(1byte),但每个编码的开头均为 0,也        表中 0-31 的 ASCLL 值均为特殊控制字符,其后的 32-126 则为英语字符和一些符号,127 为删除符号。值得主义的是,从 65 号大写字符 ' A ' 开始往后连续的 26 个 ASCLL 值均为英文大写字符,从 97 号小写字符 ' a ' 往后连续的 26 个 ASCLL 值均为英文小写字符,且均按英语字母表排列,且大写字符和小写字符之间的 ASCLL 值转换只需加减32即可完成。就是说字符的二进制表达是这样的:0xxxxxxx。

    作为最开始的编码标准,ASCLL 被往后几乎所有的编码标准所兼容,这意味着,在 ASCLL 编码标准下写出的程序能被往后几乎所有的编码标准所识别。


三、关于 UTF-8 编码标准

    1.Unicode

        随着计算机的普及,越来越多的国家设立了他们自己特殊的编码规范,如GBK(中文),Shift-JIS(日文),EUC-KR(韩文),以至于同一时间,世界上存在了几十种编码规范且互不兼容,十分不利于国家之间的交流。于是,统一编码联盟(The Unicode Consortium)推出了一种包含十万多个字符的编码标准,即 Unicode 编码标准,它包含了UTF-8,UTF-16,UTF-32,其中,UTF-8 最为常见。


    2.UTF-8

        UTF-8 是万维网最主要的编码形式 截止到2019年11月,所有网页中,UTF-8 的使用率高达 94.3%(维基百科),IETF(互联网工程工作小组)要求所有网络协议支持 UTF-8 编码。

        UTF-8 是一种变长编码,这同 ASCLL (每个字符一个字节大小)和 UTF-32(每个字符四个字节大小)不同,不同的字符拥有不同的编码长度,从一个字节到四个字节不等,它的编码规则如下:

        被分配到 0x000000 - 0x00007F 中的字符与 ASCLL 中的字符完全一样,只占一个字节二进制表达为:0x0xxxxxxx。

        被分配到 0x000080 - 0x0007FF 中的字符占两个字节,二进制表达为 :0x110xxxxx 0x10xxxxxx。

        被分配到 0x000800 - 0x00FFFF 中的字符占三个字节,二进制表达式为:0x1110xxxx 0x10xxxxxx 0x10xxxxxx。

        被分配到 0x010000 - 0x10FFFF 中的字符占四个字节,二进制表达式为:0x11110xxx 0x10xxxxxx 0x10xxxxxx 0x10xxxxxx。

        具体的 UTF-8 编码表可参考:https://symbl.cc/cn/unicode-table/#cjk-unified-ideographs-extension-g


四、关于 GBK 编码标准

    GBK 是一种变长编码,兼容 ASCLL 编码,ASCLL 编码中的字符在GBK中的大小为单字节,中文则采用双字节。它先将所编码的字符分成 94 个分区,又每个分区的每个字符分配了一个分区内编号,表达时则使用 分区编号 + 分区内编号 的方式表示。例如,汉字“中”的分区编号为 54,分区内编号为 48,则汉字“中”的十进制表示则为 54 48。


五、关于 ANSI 编码标准

    特殊动态编码,即 ANSI 并不算是一种传统编码标准,更像是一种编码标准选择,它将 UTF-8,GBK,以及其他的编码标准分配给一个个“代码页”,然后根据使用者的系统选择相应的编码页进行编码,如使用一台简体中文的 Windows 系统时,ANSI 将选择 GBK 编码模式,而在一台使用日文的 Windows 系统中时,ANSI 将选择 Shift-JIS 编码,这导致相同的字符在不同的系统中时会有不同的编码方式,以至于出现乱码。我们可以在命令提示符中使用 chcp 获取我们当前使用的代码页以及更换我们的代码页。

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
搜索
最新留言
    «    2026年2月    »
    1
    2345678
    9101112131415
    16171819202122
    232425262728

    Powered By Z-BlogPHP 1.7.4