https://juejin.im/post/5edc2c3d518825433e1fb86a#heading-0
为什么需要base64语法?
一个字节的二进制是8位,也就是0255的区间,而ASCII码编码只有0127,其他128~255是不可见的,所以当转码的时候,需要通过base64进行折叠,从而可以从超出范围的码值进行传输,而转码的规则,base64是64个可打印字符,也就是2^6,以6个比特为一个可见单位进行转码,不足以0进行补位
可以通过进行图片展示和压缩
通过btoa()进行转码
通过atob()进行解码
什么是ASCII码
阮一峰老师的博客: http://www.ruanyifeng.com/blog/2007/10/ascii_unicode_and_utf-8.html
- 计算机是二进制表示的,那么为了人类更好理解,美国首先提出了ASCII编码,可以表示128种符号,刚好用来表示所有的英文字母和常用符号以及无法打印出来的32个控制符号,虽然有8位但是实际上只占用了7位,第一位为0;
- 后来流传到其他国家,有其他的字符,为了扩展更多的表示出现了EASCII码,使用了完整的8位,共256种;后面的128位在各个国家可能有不同的表示内容
- 再后来到了中国为了表示汉字则出现了GBXXXX编码,最常见的是GB2312使用两个字节表示一个汉字,GB编码与统一的Unicode和utf-8无关
- 最终为了国际的统一,提出了Unicode进行编码,unicode囊括了所有的编码方式,多达百万的编码方式都可以在这里找到他的对应二进制编码
- utf-8是Unicode的一种实现,它规定了如何区分这些二进制编码,是一种变长的编码方式。如果都用最大的长度来表示,最常用的短编码则要浪费很多存储空间和流量,所以utf-8规定,以最前面的字符做区分,比如最常用的短编码则用0来标记,结果也就跟ASCII码是一致的,其他的复杂编码则前n位置为1,n+1位置为0,和其后面的字节的前两位置为10来标记,从后往前填充,不够则补0
-
其他的实现方式如utf-16、utf-32则是以2或4个字符来表示Unicode编码的
编码范围
网友评论