编码和字符集/URL编码/Base64编码

一、编码

1.定义:
把信息按一种固定规则由一种形式转换为另外一种形式的过程就就是编码。
比如:我们规定a用赵表示,b用钱表示,c用孙表示,d用李表示……现在有个字符串"bad",我们经过编码就变成了"钱赵李"。
但编码不一定是针对字符,非字符信息图片声音等依然可以按照某种规则编码以方便存储和传输,比如我们规定红色用*表示,绿色用#表示,蓝色用$表示……那三个蓝色信息经过编码就变成了 " $$$"。

二、字符集

字符集其实就是一种编码,只不过比较特殊的是它使用二进制针对我们用的文字字符进行编码,所以就称为字符集。
1.定义:
用一个或者多个字节表示一个字符,这样的集合就是字符集。
2.字符集有很多种
①ASCII: 用一个字节来表示字符,只能表示2^8=256个符号,前128位用来表示常见128个英文字符。
②GBK: GBK是中国基于ASCII对中文进行的扩展,由于ASCII只用1个字节来编码,无法表示数量很大的汉字,中国就增加了一个字节总共2个字节来表示汉字。GBK中规定,只要第一个字节大于127就表示该编码为汉字。GBK里英文字符依然和ASCII相同,只用一个字节,但是GBK中只保留了前128个常用ASCII字符。
③Unicode: 由于不同国家为了表示自己的文字,对ASCII进行了类似GBK一样的扩展,相互之间重叠使用编号,无法兼容通用。为了表示世界上所有字符,形成了世界统一编码规范,这个就是Unicode编码,标准Unicode编码使用4个字节来进行编码。
④UTF-8: 由于固定4个字节的存储方式对于英文字符等存储效率不高,因此出现了中间格式字符集,被称为通用转换格式,即UTF(Universal Transformation Format),UTF-8是最常用的一种。
UTF-8的最大特点是针对不同的字符使用不同长度(1~4字节)的编码。在对英文字符进行编码时,使用1个字节并与ASCII完全相同;对汉字进行编码时,使用3个字节。
⑤ANSI: 不同的国家和地区制定了不同的标准,由此产生了 GB2312、GBK、GB18030、Big5、Shift_JIS 等各自的编码标准。这些使用多个字节来代表一个字符的各种汉字延伸编码方式,称为 ANSI 编码。在简体中文Windows操作系统中,ANSI 编码代表 GBK 编码;在繁体中文Windows操作系统中,ANSI编码代表Big5;在日文Windows操作系统中,ANSI 编码代表 Shift_JIS 编码。

3.宽字符集:
使用多于1字节进行编码的字符集都称为宽字符。

三、Base64编码

1.定义: 很多地方将其称为base64加密,其实它使用的是编码的方法,但又具备一点加密的特征。base64编码是使用A-Z,a-z,0-9,/,+ 共64个字符来表示一个字符串的方式。
2.编码过程: 2^6=64个字符可以用6位二进制数表示。其实base64的编码过程是先把字符串按ASCII转换为二进制,再把生成的二进制数每6位为一段,用对应的base64编码字符表示。若不能恰好每6位均分,则在高位用0补齐。base64进行编码的字符串使用ASCII转换为二进制后的位数应该是6和8的倍数,如位数不够,高位补0直至总位数达到6和8的倍数,然后从高位至低位每6个0用一个=表示,最多只可能出现两个=号。
在这里插入图片描述
如图,love的Base编码为bG92ZQ==,黄色蓝色部分均为补零。

四、URL编码

1.URL编码:
一方面,在网络种传输URL,只能使用ASCII中的可打印字符来表示,汉字和特殊字符就必须转换为合法字符才能传输;另一方面,URL提交的数据中可能会包含一些URL标准中规定的控制字符比如= &等,不进行处理可能会引起服务器解析混乱。所以就需要一种编码方式,把汉字和控制字符转换为合法形式表示,这种转换就是URL编码。
比如index.php?search_name=“美女&野兽”,URL中须把中文字符转为合法英文字符才能传输,另外&是一个URL中的控制字符,为避免被服务器当作控制字符使用,也需要进行类似代码中的转义操作。
2.URL编码方式
URL编码也被称为百分号编码(percent-encoding),其编码后的数据都是“%xx”的形式。对特殊字符和英文字符,有一个固定的URL编码表;对于汉字,xx是汉字经过某种字符集(比如GBK或者UTF-8)编码后的16进制数;
:URL编码的时候,可以对整个URL编码,也可以只针对汉字和特殊字符编码。
3.常见符号URL编码

+   %20   
/   %2F   
?   %3F   
%   %25   
#   %23   
&   %26  
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值