一、URL编码
由于URL只支持英文字母、数字、横杠、下划线、句点、波浪线,若要表示其他字符则需要编码
例如:百分号、中文
由于百分号也需要编码,因此会出现某些绕过问题
URL编码基于ASCII,如果字符有ASCII码,编码成%+ASCII的形式;如果字符没有ASCII码,先根据当前页面的编码方式转换,取其十六进制形式每两位添加%
二、Base64编码
Ⅰ、对照表
Base64有64个字符,对照表如下:
序号 | 字符 |
---|---|
0 | A |
… | … |
25 | Z |
26 | a |
… | … |
51 | z |
52 | 0 |
… | … |
61 | 9 |
62 | + |
63 | \ |
Ⅱ、编码过程
首先将给定的字符串转换成对应的字符编码,取二进制形式;接着每3个8bit分为一个大组,共24bit;对每一大组划分成四个小组,每个小组有6bit;若不够补0;将每个6bit小组查表转换成Base64字符,若补0能凑得字符A(即:补了一整个小组的0)则换成等号
三、html编码
对于某些危险字符,html会将其视为标签,因此使用特殊的编码区分,这些编码叫html字符实体
w3s:HTML实体符号参考手册