Url字符转义

一、为何进行URL字符转义
如果你的表单使用get方法提交,并且提交的参数中有“&”等特殊符的话,如果不做处理,在service端就会将&后面的作为另外一个参数来看待。因此,需要对url字符进行转义。
例如表单的action为list.jsp?act=go&state=5 则提交时通过request.getParameter可以分别取得act和state的值。 如果你的本意是act='go&state=5’这个字符串,那么为了在服务端拿到act的准确值,你必须对&进行转义
二、URL转义字符的原理——将特殊字符转换成ASCII码
格式:%字符的ASCII码,即一个百分号%,后面跟对应字符的ASCII(16进制)码值。
ASCII码表
空格的ASCII值(16进制)
例:空格的ASCII值(16进制)为20,则空格的编码值为%20。
三、有哪些字符需要转义?

特殊字符 ASCII值(16进制) URL编码值
空格(0) 20 %20
+ 2B %2B
/ 分隔目录和子目录 2F %2F
? 分隔实际的URL和参数 3F %3F
% 指定特殊的字符 25 %25
+ 2B %2B
# 书签 23 %23
&指定参数的分隔符 26 %26
= 3D %3D
换行LF 0A %0A
回车CR 0D %0D
四、实例

china
Content-Length: 0

HTTP/1.1 200 OK
Content-Type: text/html
Content-Length: 47

< html>Insert undesireable content here< /html>

则其转义字符串为:
china%0d%0aContent-Length:%200%0d%0a%0d%0aHTTP/1.1%20200%20OK%0d%0aContent-Type:%20text/html%0d%0aContent-Length:%2047%0d%0a%0d%0a
< html >Insert undersireable content here< /html >

猜你喜欢

转载自blog.csdn.net/lay_loge/article/details/88574202