Unicode编码和变量类型

在这里插入图片描述
在这里插入图片描述

Unicode

​ 虽然通过使用不同字符集,我们可以在一台机器上查阅不同语言的文档,但是我们仍然无法解决一个问题:

如果一份文档中含有不同国家的不同语言的字符,那么无法在一份文档中显示所有字符。

为了解决这个问题,我们需要一个全人类达成共识的巨大的字符集,这就是Unicode字符集
Unicode字符集涵盖了目前人类使用的所有字符,并为每个字符进行统一编号,分配唯一的字符码(CodePoint)。Unicode字符集将所有字符按照使用上的频繁度划分为17个层面(Plane),每个层面.上有216=65536个字符码空间。
其中第0个层面BMP,基本涵盖了当今世界用到的所有字符。其他的层面要么是用来表示一些远古时期的文字,要么是留作扩展。我们平常用到的Unicode 字符,一般都是位于BMP层面上的。目前Unicode字符集中尚有大量字符空间未使用

缺点:

​ Unicode只是规定了一个符号的二进制代码,但是没有规定二进制代码应该如何进行存储:无法区别Unicode和ASCII。 并且使用Unicode编码的英文字母需要用三到四个字节去表示,会造成极大的存储空间浪费。

utf-8

utf-8是unicode的一种实现方式,使用最为广泛。

​ utf-8是一种变长的编码方式,使用1-6个字节去表示一个符号,解决了Unicode的英文字母浪费空间的缺点。

​ utf-8编码规则:

  • 对于单字节的utf-8,字节的最高位为0,其余七位用来对字符进行编码。
  • 对于多字节的编码,如果编码包含了n个字节,那么第一个字节的前n位为1,第一
    编码,如果编码包含了n个字节,那么第一个字节的前n位为1,第一
    个字节的第n+1 位为0,该字节的剩余各位用来对字符进行编码。在第一个字节之后的所有的字节,都是最高两位为"10",其余6位用来对字符进行编码。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值