URL编码

一个完整的请求地址

RFC 1738规定:"只有字母和数字[0-9a-zA-Z]、一些特殊符号"$-_.+!*'(),"[不包括双引号]、以及某些保留字,才能够不通过编码直接用于URL。"chrome

http://[username:password@]www.host.com[/contextPath]/servletPath/pathInfo?name=中国
contextPath上下文路径,若是部署在根目录下,则省略上下文路径。浏览器

网址路径中包含汉字、查询字符串包含汉字、在已打开的网页上,直接用Get或Post方法发出HTTP请求、Ajax调用的URL包含汉字
例如:
http://localhost/上下文路径/servlet路径/路径信息?name=中国服务器

Request URL: http://localhost/**%E4%B8%8A%E4%B8%8B%E6%96%87%E8%B7%AF%E5%BE%84**/*servlet%E8%B7%AF%E5%BE%84*/**%E8%B7%AF%E5%BE%84%E4%BF%A1%E6%81%AF**?name=*%E4%B8%AD%E5%9B%BD*函数

方法 名称 原始值 浏览器编码后 服务器是否解码 解码后
getContextPath() contextPath 上下文路径 %E4%B8%8A%E4%B8%8B%E6%96%87%E8%B7%AF%E5%BE%84
getServletPath() servletPath servlet路径 servlet%E8%B7%AF%E5%BE%84 /servlet路径
getPathInfo() pathInfo 路径信息 %E8%B7%AF%E5%BE%84%E4%BF%A1%E6%81%AF /路径信息
getQueryString() queryString name=中国 name=%E4%B8%AD%E5%9B%BD name=中国

Firefoxchrome 测试,中文字符浏览器采用UTF-8编码并加%。测试

escape()不能直接用于URL编码,它的真正做用是返回一个字符的Unicode编码值。除了ASCII字母、数字、标点符号"@ * _ + - . /"之外,对其余全部字符进行编码。在\u0000到\u00ff之间的符号被转成%xx的形式,其他符号被转成%uxxxx的形式。对应的解码函数是unescape()。编码

encodeURI()是Javascript中真正用来对URL编码的函数。
它着眼于对整个URL进行编码,所以除了常见的符号之外,对其余一些在网址中有特殊含义的符号"; / ? : @ & = + $ , #",也不进行编码。编码后,它输出符号的utf-8形式,而且在每一个字节前加上%code

相关文章
相关标签/搜索