UTF-8与Unicode编码

        作为开发人员,编写代码的时候,总归是离不开编码的,我们常见的编码格式有ASCII码,GBK,Unicode, UTF-8,平常最常见的场景就是Unicode与UTF-8之间的互转,ASCII编码一套标准的信息交换表,GBK编码也称国标,是为了方便中文用户使用。

Unicode编码
  • 万国码,为了解决各个国家之间字符不同的矛盾,它的机制是转换为字节类型的,然后各个国家用自己的编码进行解码,Unicode是以两个字节编码一个字符,所以不支持ASCII码表。
  • Unicode 为世界上所有字符都分配了一个唯一的数字编号,这个编号范围从 0x000000 到 0x10FFFF (十六进制),有 110 多万,每个字符都有一个唯一的 Unicode 编号,这个编号一般写成 16 进制,在前面加上 U+。例如:“马”的 Unicode 是U+9A6C
  • Unicode 本身只规定了每个字符的数字编号是多少,并没有规定这个编号如何存储。所以**编号怎么对应到二进制表示**呢?有多种方案:主要有 UTF-8,UTF-16,UTF-32。
  • 那么对于一个具体的 Unicode 编号,具体怎么进行 UTF-8 的编码呢?
Unicode转UTF-8
  1. 首先找到该 Unicode 编号所在的编号范围,进而可以找到与之对应的二进制格式。

  2. 然后将该 Unicode 编号转化为二进制数(去掉高位的 0),最后将该二进制数从右向左依次填入二进制格式的 X 中,如果还有 X 未填,则设为 0 。

  3. 比如:“马”的 Unicode 编号是:0x9A6C,整数编号是 39532,对应第三个范围(2048 - 65535),其格式为:1110XXXX 10XXXXXX 10XXXXXX,39532 对应的二进制是 1001 1010 0110 1100,将二进制填入进入就为: 11101001 10101001 10101100

UTF-8编码
  • 也称万国码,完善了Unicode的缺点,支持ASCII 码表, 是以三个字节编码一个字符
  • 计算机使用0和1来实现存储,比如字符C在通过UTF-8转为二进制:"01000011",那么计算机在显示这个字符的时候,需要经过两个步骤。
  1. 计算机将二进制"01000011"转为10进制,67
  2. 计算机在Unicode字符集中查找67,找到字符**“C”**
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值