一、为何进行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进制)为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 >
博客介绍了URL字符转义的原因,当表单用get方法提交且参数含特殊符时,为让服务端准确取值需转义。阐述了转义原理,即把特殊字符转换成ASCII码,格式为%字符的ASCII码。还给出了字符转义的示例。
2387

被折叠的 条评论
为什么被折叠?



