• Unicode和Utf-8详细解说


      1、ANSI (American National Standards Institute,美国国家标准协会)制定的“ASCII”编码(American Standard Code for Information Interchange,美国信息互换标准代码)。那时世界上所有的计算机都用同样的ASCII方案来保存英文文字,是基于拉丁字母的一套电脑编码系统,主要是用于显示现代英语和其他西欧的语言,它是现今最通用的单字节编码系统,等同于国际标准ISO/IEC 646。

      下面我们来看一下,ASCII表格。

      ASCII码为7位,占一个字节(最高为0),它存放时必须占全一个字节,也即占用8位。ASCII编码是由ANSI(美国国家标准协会)制定的一种包括数字、字母、通用符号、控制符号在内的字符编码集。

     编码简单描述:

    (1)ASCII码:美国人最初把自己的语言用计算表示,发现0-127可以表示数字、字母、通用符号、控制符号。(7位,占用1个字节。)

    (2)ISO 8899-1:欧洲人研发,0-127是ASCII码,128-255加了一些特殊的字符。(占用1个字节。)

    (3)GBK:中国人研发,兼容ASCII码来表示中文。(占用两个2字节。)

    (4)Unicode:设计出全世界语言的对应编码,就像编了一本大汉语词典。

            定义地址范围:3个字节(编码表的编号从0一直算到了100多万)。

            字符都有唯一的编号,这就解决了解码的冲突。

            没有为编码的二进制传输和二进制解码作出规定。

    于是,就出现了如下解决方案:utf-8(1个字节), utf-16(2个字节), utf-32(4个字节)这些编码方案。

    utf-8这种解决方案,用得最多,因为在当时它的方案最好,最节省资源。

    utf-8为了节省资源,采用变长编码,编码长度从1个字节到6个字节不等。

    UTF-8的编码规则很简单,只有二条:
    1、对于单字节的符号,字节的第一位设为0,后面7位为这个符号的unicode码。因此对于英语字母,UTF-8编码和ASCII码是相同的。
    2、对于n字节的符号(n>1),第一个字节的前n位都设为1,第n个字节的第n+1位设为0,后面字节的前两位一律设为10。剩下的没有提及的二进制位,全部为这个符号的unicode码。

    提问:后面字节的前两位一律设为10,为什么呢?

    后面字节的前两位一律设为10(10000000也就是80)是因为必须要大于7F才和ASCII码分开。

    下面,我们来宏观的看一下UTF-8和Unicode是怎么工作的吧?

     
     
  • 相关阅读:
    linux nat style
    vmware tools install
    linux network
    sql group by max
    实例 | tp5使用七牛云上传图片和文件/删除文件
    菜鸟如何使用composer
    浅谈数据库用户表结构设计,第三方登录
    app登陆,注册,第三方登陆数据设计及业务流程
    数据库设计——评论回复功能
    app接口设计之token的php实现
  • 原文地址:https://www.cnblogs.com/niuwa/p/7793950.html
Copyright © 2020-2023  润新知