http——编码

1. 编码:支持更多语种

不同语种的常用文字数量不同,因此存放字符的空间大小不同,导致不同字节编码方式。

单字节编码:
ASCII,用于英语环境
双字节编码:
GB2312:用于汉字
GBK:用于汉字
GB18030:用于汉字
多字节编码:
unicode:解决不同语种的统一编码
常见的unicode:utf-8,utf-7,utf-16

国内,早期站点多使用 GBK 显示中文,但目前多使用 utf-8.
因为unicode编码支持多种语种环境。

utf-8是3字节编码,而GBK是2字节编码,所以utf-8消耗更多资源,
但现在资源充足,所以两者没明显使用差别。

2. 查看http报文当前使用的编码方式

查看 content-type 的 charset标识,识别网页的编码方式

Content-Type: text/html;charset=UTF-8

3. 编码:url解析特点字符

url中,某些字符有特定意义:
‘/‘ : 访问路径
‘?‘ : 参数名
‘&‘ : 间隔

若普通数据中有这些字符,则会对url解析造成影响,解决方法:编码

3.1 为何需要url编码

RFC规定,url中普通数据只能有:
英文字母(a-z,A-Z),数字(0-9),4个特殊字符(-,_,.,~),保留字符
若使用的字符不在这个范围内,都需要编码,如:
用户输入的参数中带有,单引号,百分号,中文等.
因此需要对url中这些字符进行编码

3.1.1 url编码规则

URL编码主题使用ASCII编码表,编码方式用%加上两位字符代表一个字节。
如单引号在ASCII的十六进制为27,在url编码中就是%27.
对于中文字符,先确认当前页面所用的编码格式,如当前页面使用utf-8编码,
则先将中文字符转换成utf-8编码,然后在每个字符的每一组编码前添加%
url编码前

http://127.0.0.1/login.jsp?name=测试&passwd=123%$

url编码后

http://127.0.0.1/login.jsp?name=%E6%B5%8B%E8%AF%95&passwd=123%25$

其中中文字符的编码过程如下:
测 --- utf-8 编码,十进制表示--> 15119755 -- 16进制表示 --> %E6%B5%8B
试 --- utf-8 编码,十进制表示--> 15249301 -- 16进制表示 --> %E8%AF%95

3.1.2 base64编码

base64常用于http环境下传递较长标识信息。

3.1.3 html字符实体

html字符实体 是用于表示 html 中危险字符的方案,也是解决xss攻击的有效手段。

若要正确的显示危险字符,可以用html字符实体实现。
html字符实体的特点是以 &开头,以分号结尾。如 < 的编码为 ‘<‘.

如xss代码为 。
经过html字符实体处理后:
<script>alert(/xss/)</script>

经过编码后,浏览器会将 编码后的内容当成正常数据,显示
若没有编码,浏览器会将 内容当成 标签

http——编码

上一篇:.net 搜索联想词


下一篇:前端分页