URL编码
Posted 睡你的椒
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了URL编码相关的知识,希望对你有一定的参考价值。
一个完整的请求地址
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() | 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=中国 |
经Firefox 和chrome 测试,中文字符浏览器采用UTF-8编码并加%。
escape()不能直接用于URL编码,它的真正作用是返回一个字符的Unicode编码值。除了ASCII字母、数字、标点符号"@ * _ + - . /"以外,对其他所有字符进行编码。在\\u0000到\\u00ff之间的符号被转成%xx的形式,其余符号被转成%uxxxx的形式。对应的解码函数是unescape()。
encodeURI()是javascript中真正用来对URL编码的函数。
它着眼于对整个URL进行编码,因此除了常见的符号以外,对其他一些在网址中有特殊含义的符号"; / ? : @ & = + $ , #",也不进行编码。编码后,它输出符号的utf-8形式,并且在每个字节前加上%
以上是关于URL编码的主要内容,如果未能解决你的问题,请参考以下文章
markdown 打字稿...编码说明,提示,作弊,指南,代码片段和教程文章
结合两个代码片段?将用户输入的 Youtube url 转换为嵌入 url,然后将 iframe src 替换为转换后的 url