编码

 

文本文件和二进制文件

 

 

 

ASCII

计算机使用二进制表示信息(0,1),8位bit表示一个字节,一个字节可以表示256中符号(2的8次方)00000000—11111111,每一种值对应一个符号,一共256个符号,

ASCII是基于拉丁字母的一套电脑编码系统,至今为止共定义了128个字符;只占用了一个8bit的后面7位,最前面一位统一规定为0,其中33个字符无法显示(一些终端提供了扩展,使得这些字符可显示为诸如笑脸等8-bit符号),且这33个字符多数都已是陈废的控制字符。控制字符的用途主要是用来操控已经处理过的文字。在33个字符之外的是95个可显示的字符。用键盘敲下空白键所产生的空白字符也算1个可显示字符(显示为空白)。

控制字符:

可显示字符:

ASCII的局限在于只能显示26个基本拉丁字母、阿拉伯数字和英式标点符号,因此只能用于显示现代美国英语,因此,现在的软件系统大多采用Unicode。

Unicode

英语用128个符号编码就够了,但是用来表示其他语言远远不够,如果利用8bit字节中最前面那一位,就可以表示256种字符,但是,如果不同的国家都使用256种字符,会出现不同的国家有不同的字母,有的国家语言使用256个字符也不够,如中文有10万个汉字,比如,简体中文常见的编码方式是 GB2312,使用两个字节表示一个汉字,所以理论上最多可以表示 256 x 256 = 65536 个符号。考虑多个国家的不同编码,会出现同一个二进制数字表示不同的符号,因此要预先知道一个文本的编码方式,否则会出现乱码。

Base64

什么是Base64

——来自维基百科

Base64是一种使用64个(可打印的)字符来表示二进制数据的方法,因为6个bit可以表示64个不同的值(2的6次方),所以每6个bit为一个单元,对应某个可以打印的字符。3个字节(每个字节8bit)有24个bit,对应4个Base64单元,即3个字节可以用4个可打印字符来表示。

Base64中的可打印字符包括字母A—Z,a—z,数字0—9,62个字符,另外两个可打印符号在不同系统中不同。

Base64常用于在通常处理文本数据的场合,表示、传输、存储一些二进制数据,包括MIME的电子邮件及XML的一些复杂数据?

其中数值62,63对应的+ /在不同的应用和系统中不同 

如果要编码的字节数不能被3整除,最后会多出1个或2个字节,那么可以使用下面的方法进行处理:先使用0字节值在末尾补足,使其能够被3整除,然后再进行Base64的编码。在编码后的Base64文本后加上一个或两个=号,代表补足的字节数。也就是说,当最后剩余两个八位(待补足)字节(2个byte)时,最后一个6位的Base64字节块有四位是0值,最后附加上两个等号;如果最后剩余一个八位(待补足)字节(1个byte)时,最后一个6位的base字节块有两位是0值,最后附加一个等号。 参考下表:

Base64的应用

  • 利用Base64对图片编码

在前段页面内,直接将图片嵌入网页,不用再从外部载入文件,图片是二进制文件,利用Base64可以对图片或其他文件的二进制数据进行编码,将其作为文本字符串嵌入网页中

body { background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAJ8AAACiCAYAAA...');}
const blockIconURI = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAJ8AAACiCAYAAAB...';
<img alt="Embedded Image" src="https://img-blog.csdnimg.cn/2022010710584764040.png" />
  • 用于URL的改进Base64编码

在数据传输时,要求只能包括简单字符,如果出现特殊意义的字符,可以通过编码避免特殊意义的字符出现?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值