一个完整的请求地址

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

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()servletPathservlet路径servlet%E8%B7%AF%E5%BE%84/servlet路径
getPathInfo()pathInfo路径信息%E8%B7%AF%E5%BE%84%E4%BF%A1%E6%81%AF/路径信息
getQueryString()queryStringname=中国name=%E4%B8%AD%E5%9B%BDname=中国

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

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

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


NewBie
10 声望0 粉丝

引用和评论

0 条评论