`
huangyongxing310
  • 浏览: 479052 次
  • 性别: Icon_minigender_1
  • 来自: 广州
文章分类
社区版块
存档分类
最新评论

URI和URL的区别、URL编码

阅读更多
URI和URL的区别
URI,是uniform resource identifier,统一资源标识符,用来唯一的标识一个资源。

而URL是uniform resource locator,统一资源定位器,它是一种具体的URI,即URL可
以用来标识一个资源,而且还指明了如何locate这个资源。



URL编码
情况1:网址路径中包含汉字
http://zh.wikipedia.org/wiki/春节
网址路径的编码,用的是utf-8编码。

情况2:查询字符串包含汉字
http://www.baidu.com/s?wd=春节
查询字符串的编码,用的是操作系统的默认编码。

情况3:Get方法生成的URL包含汉字(就是输入生成)
<meta http-equiv="Content-Type" content="text/html;charset=xxxx">
GET和POST方法的编码,用的是网页的编码。

情况4:Ajax调用的URL包含汉字
在Ajax调用中,IE总是采用GB2312编码(操作系统的默认编码),而Firefox总是采用utf-8编码。



JavaScript编码函数
escape()
除了ASCII字母、数字、标点符号"@ * _ + - . /"以外,对其他所有字符进行编码。在\u0000到\u00ff之间的符
号被转成%xx的形式,其余符号被转成%uxxxx的形式。对应的解码函数是unescape()。


encodeURI() 函数
可把字符串作为 URI 进行编码
该方法不会对 ASCII 字母和数字进行编码,也不会对这些 ASCII 标点符号进行编码:-_.!~*'();/?:@&=+$,#
编码后,它输出符号的utf-8形式,并且在每个字节前加上%。

document.write(encodeURI("http://www.w3school.com.cn")+ "<br />")
document.write(encodeURI("http://www.w3school.com.cn/My first/"))
document.write(encodeURI(",/?:@&=+$#"))

//批注:只转换域名后面的部分,并且对,/?:@&=+$#不处理。

// http://www.w3school.com.cn
// http://www.w3school.com.cn/My%20first/
// ,/?:@&=+$#



encodeURIComponent()
该方法不会对 ASCII 字母和数字进行编码,也不会对这些 ASCII 标点符号进行编码: - _ . ! ~ * ' ( ) 。
其他字符(比如 :;/?:@&=+$,# 这些用于分隔 URI 组件的标点符号),都是由一个或多个十六进制的转义序列替换的。

如果 username = 'a&foo=boo' 而不用 encodeURIComponent 的话,整个参数就成了 name=a&foo=boo,
这样 CGI 就获得两个参数 name 和 foo. 这不是我们想要的。(encodeURIComponent()就是解决这种问题的)

document.write(encodeURIComponent("http://www.w3school.com.cn"))
document.write(encodeURIComponent("http://www.w3school.com.cn/p 1/"))
document.write(encodeURIComponent(",/?:@&=+$#"))

//对比
// http%3A%2F%2Fwww.w3school.com.cn
// http%3A%2F%2Fwww.w3school.com.cn%2Fp%201%2F
// %2C%2F%3F%3A%40%26%3D%2B%24%23



escape不编码字符有69个:*,+,-,.,/,@,_,0-9,a-z,A-Z
encodeURI不编码字符有82个:!,#,$,&,',(,),*,+,,,-,.,/,:,;,=,?,@,_,~,0-9,a-z,A-Z
encodeURIComponent不编码字符有71个:!, ',(,),*,-,.,_,~,0-9,a-z,A-Z


分享到:
评论

相关推荐

    ios 对url中的特殊字符进行编码和反编码

    ios 对url中的特殊字符进行编码和反编码

    URL编码转换器(C#源码)

    URL编码转换器,写搜索引擎时遇害到URI编码问题,顺手写了这个小软件~

    json-uri:小型且与浏览器兼容的URL友好型JSON转换器

    json-uri与类似的包(如json-url和juri有一些区别: 它与可读性无关。 没有多行格式,JSON字符串很少可读,因此作为单行字符串,尝试使编码的字符串保持可读性通常是无用的。 它不采用压缩算法或其他复杂方法来...

    asp.net URL编码与解码

    例如Url参数字符串中使用key=value键值对这样的形式来传参,键值对之间以&符号分隔,如/s?... Url编码的原则就是使用安全的字符(没有特殊用途或者特殊意义的可打印字符)去表示那些不安全的字符。 预备知识:UR

    URL解码|编码「URL Decode | Encode」-crx插件

    URL编码(也称为百分比编码)是一种用于在统一资源标识符(URI)中对信息进行编码的机制。 这是一个开发人员实用程序,可让您将编码的URL字符串粘贴(或键入)到文本字段中并查看解码的版本。 如果您经常处理编码的...

    uri-manipulations:用于操纵URI对象的函数和中间件

    URI中间件,可简化对Uri对象的过滤和操作; 系统要求 你需要: PHP&gt; = 7.0,但建议使用最新的稳定版PHP intl扩展 依存关系 安装 $ composer require league/uri-manipulations 文献资料 完整的文档可以在上找到。...

    js 转义字符及URI编码详解

    如果要在URL中传递特殊符号的原本意义,要对他们进行编码。编码的格式为:%加字符的ASCII码(16进制),例如空格的编码值是” ″。 URL中特殊符号的用途及普通意义的编码 + URL 中+号表示空格 + 空格 ...

    is-absolute-url:检查URL是否是绝对的

    是绝对网址 检查URL是否是绝对的 安装 $ npm install is-absolute-url 用法 const isAbsoluteUrl = ... Tidelift帮助维护人员实现开源的可持续发展,同时为公司提供帮助有关其依赖项的安全性,维护和许可的保证。

    关于URL中的特殊符号使用介绍

    由于有效的URI中不能包含某些字符,如空格等,如果不利用相应编码函数对URI进行编码(浏览器会对相应的URL进行处理),那么无法访问到有效的资源。 javascript的Global对象(javascript的内置对象)中有四个URI方法...

    svg-url-loader:一个Webpack加载器,将SVG文件作为utf-8编码的DataUrl字符串加载

    现有的始终对data-uri进行Base64编码。 由于SVG内容是人类可读的xml字符串,因此不必强制使用base64编码。 相反,人们只能逃离和替换"与'所描述的。 选择base64上的utf-8编码有一些好处。 结果字符串更短(对于2K...

    quri:Common Lisp的另一个URI库

    URI里 由摄,根据许可获得许可。... URL编码/解码实用程序。 url-decode url-decode-params url-encode url-encode-params用法(use-package :quri)( defvar *uri* (uri " http://www.ics.uci.edu/pub/ietf/uri/

    Data URI scheme详解和使用实例及图片base64编码实现方法

    在上面的Data URI中,data表示取得数据的协定名称,image/png 是数据类型名称,base64 是数据的编码方法,逗号后面就是这个image/png文件base64编码后的数据。或许你已经注意到,在有的网页上,图片的 src 或 css ...

    amazon-s3-uri:可以解析出有关 S3 URI 的信息的 URI 包装器

    给定的url字符串没有预处理(如果需要,您必须自己编码和替换特殊字符) 对于有效的 S3 uri, region永远不会为null但会默认为us-east-1 例子 const AmazonS3URI = require ( 'amazon-s3-uri' ) try { const uri...

    url的三个js编码函数escape(),encodeURI(),encodeURIComponent()简介

    解决url传递中文乱码问题,解决后台接收到的汉字是乱码的

    NChardet文本文件编码探测库源码,C#,txt文件编码自动探测

    //Uri url = new Uri(“http://cn.yahoo.com”); //HttpWebRequest request = // HttpWebRequest)WebRequest.Create(url); //HttpWebResponse response = // (HttpWebResponse)request.GetResponse(); Stream ...

    php escape URL编码

    php提供的URL编码函数是基于字节的,对由ie的javascript函数escape编码的数据就无能为力了。

    URL Decode | Encode-crx插件

    URL编码(也称为百分比 - 编码)是用于在统一资源标识符(URI)中的信息编码信息的机制。 这是一个开发人员实用程序,允许您粘贴(或键入)将编码的URL字符串粘贴到文本字段中,并查看解码版本。 如果您经常处理...

    浅谈SpringBoot处理url中的参数的注解

    下面小编就为大家分享一篇浅谈SpringBoot处理url中的参数的注解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

    datauri:通过terminal或node.js生成Data-URI方案

    用于生成和 。模组npm i --save datauri命令行界面npm i -g datauri-cli使用datauri的工具NPM脚本古尔一个插件,用于将图像转换为嵌入式数据URI。 旨在用作的简单单一用途包装器。RUN 在datauri模块的顶部运行着许多...

    Javascript中的几种URL编码方法比较

    javascript中存在几种对URL字符串进行编码的方法:escape(),encodeURI(),以及encodeURIComponent()。这几种编码所起的作用各不相同。 escape() 方法:  采用ISO Latin字符集对指定的字符串进行编码。所有的空格符...

Global site tag (gtag.js) - Google Analytics