美文网首页
字符串编码

字符串编码

作者: zero_001 | 来源:发表于2018-02-01 10:49 被阅读0次

    字符串是一种特殊的数据类型,因为它存在编码问题。

    字符串编码

    因为计算机只能处理二进制数据,我们在电脑上看到的英文、汉字等字符都是通过二进制转换过来的结果,这种将字符转化成二进制的规则就是编码,反之则是解码。

    最早的计算机使用8个比特位(bit)来表示是一个字节,每个bit(二进制位)只有0和1两种表示方式,所以00000000 - 11111111 转换成10进制就是0-255,所以一个字节最多能够映射256个字符。

    最早的编码表是美国人发明的,他们将26个大小写英文字母和数字和一些常用的符号等128个字符写进计算机,这个编码表被成为 ASCII编码

    ASCII 码一共规定了128个字符的编码

    ASCII编码 存储的字符很少,满足不了其他国家语言的需求,比如中国的汉字就有10万个,就造成了每个国家都将自己的语言编码进编码表里面(为了避免和ASCII编码冲突默认都是从128开始)。

    问题:ASCII编码 的字符太少,满足不了语言的需求

    中国制定了 gbk编码,日本制定了 Shift_JIS编码 ,韩国把韩文编到 Euc-kr编码 里.......。几乎每个国家都有自己的编码规则,就出现了一个问题,一个网页要显示多语言,就会造成编码冲突的问题。结果就会造成网页乱码。

    问题: 世界上存在着多种编码方式,同一个二进制数字可以被解释成不同的符号。

    所以 unicode编码 诞生了,为了解决不同国家编码映射冲突的问题。unicode编码 把所有国家的语言一起按顺序编写进 unicode编码 表里面。这样就统一了各国之间的编码规则。(现在的编程语言大多数都是使用的 unicode编码 )。

    问题:unicode 之规定的字符的表现形式,并没有解决字符的存储方式。
    unicode每种语言中的每个字符设定了统一并且唯一的二进制编码,是一个很大的集合,现在的规模可以容纳100多万个符号 ,以满足跨语言、跨平台进行文本转换、处理的要求。unicode编码一定以u开头。

    由于 unicode编码 通常是两个字节,这样又导致了一个问题 - 资源浪费。如果字母A ASCII编码表里面是一个字节可以表示,unicode编码 通常是定长,所有表示A就需要在前导0。虽然 unicode编码 解决了字符编码统一的问题,但是如果文档里面大多数是以字母为主,则使用unicode编码 的存储空间将是 ASCII编码 的两倍。

    为了解决 unicode编码 存储浪费的问题,UTF-8编码 诞生了。UTF-8编码unicode编码 按照不同的字符编码成1-6个字符,UTF-8编码 是变长字符。
    UTF-8编码有一个额外的好处,就是 ASCII编码 实际上可以被看成是 UTF-8编码 编码的一部分.

    字符在计算机的编码方式

    在计算机内存中,统一使用决 unicode编码 ,当需要保存到硬盘或者需要传输的时候,就转换为 UTF-8编码

    例如:用记事本编辑的时候,从文件读取的 UTF-8编码 字符被转换为 unicode编码 字符到内存里,编辑完成后,保存的时候再把 unicode编码 转换为 UTF-8编码 保存到文件。

    编码字符集Unicode,有UTF-8、UTF-16、UTF-32等多种字符编码
    编码字符集ASCII,本身就是编码字符集,又是字符编码
    编码字符集CB2312,只有EUC-CN一种字符编码

    名词释义:

    字符:字符是一个信息单位,它是各种文字和符号的总称
    字符集(Charset):字符集是字符的集合。
    字符编码:字符编码,是指对于字符集中的字符,将其编码为特定的二进制数,以便计算机处理。

    参考链接:

    相关文章

      网友评论

          本文标题:字符串编码

          本文链接:https://www.haomeiwen.com/subject/yfxdzxtx.html