utf-8编码表_字符编码概述

最近用到了etcd的一个kv.proto生成的mvccpb.KeyValue结构体,里面的Value是[]byte类型的,可是用string()始终不能完美地打印在控制台上,因此顺便总结了一下字符编解码相关知识点。

ASCII/Unicode 编码

ASCII是一开始美国人自己玩电脑的时候用的,英文又比较少,所以ASCII整体设计特别简单,一个字节没用完就囊括了所有要用的字符。但是后来欧洲人和中国人也想玩计算机,这个ASCII实在不够用,于是又自己捣鼓起了ISO,GBK。因为欧洲人和中国人玩的时候,也要兼容ASCII(毕竟那些字符自己也用得上),所以前127号没变。但是128-256号的变化就大了,尤其是欧洲国家,同一个位置代表不同的字符,严重阻碍了交流。
后来互联网出现,统一字符集是大势所趋,于是有人牵头弄了个Unicode,势必要囊括所有你能想得到的字符。Unicode提供的是一个映射表,字符-》Unicode Point。比如U+0639表示阿拉伯字母Ain,U+0041表示英语的大写字母A,U+4E25表示汉字严。这个相当于一个统一规范,大家都别争了,统一按这个标准来。

Utf-8


但是这个U+开头的代码,并没有实际规定计算机的存储格式。换句话说,Unicode提供的是抽象编码,不是计算机实际存储的格式。于是Utf-8就出现了。这是一种变字节(1-4)的编码格式,可以根据Unicode编码的位置,调整分配的字节数量。比如1,你不用分配4个字节,只用1个就够了。这种比较人性化,减少了文本的体积。
Utf-8 计算的过程࿱

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值