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()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形式,并且在每个字节前加上%

以上是关于URL编码的主要内容,如果未能解决你的问题,请参考以下文章

VSCode自定义代码片段3——url大全

markdown 打字稿...编码说明,提示,作弊,指南,代码片段和教程文章

如何将 URL 编码为 CakePHP 参数

根据图片的url地址下载图片到本地保存代码片段

结合两个代码片段?将用户输入的 Youtube url 转换为嵌入 url,然后将 iframe src 替换为转换后的 url

从 XML 声明片段获取 XML 编码:部分内容解析不支持 XmlDeclaration