`
huangyongxing310
  • 浏览: 494127 次
  • 性别: 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


分享到:
评论

相关推荐

    Boost.URL是一个用于操作统一资源标识符(URI)和定位器(URL)的库。.zip

    5. **安全性**: 库会自动处理URL编码和解码,防止常见的注入攻击,如跨站脚本(XSS)和跨站请求伪造(CSRF)。 6. **兼容性**: Boost.URL库设计时考虑了与其他Boost库的兼容性,可以方便地与Boost.Asio、Boost ...

    C++URL编码和解码

    除了手动实现外,还可以使用第三方库,如`Poco`库中的`URIEncoder`和`URLDecoder`,或者`cpprestsdk`库的`web::uri::encode_segment`和`web::uri::decode`等函数,它们提供了更便捷的方式来处理URL编码和解码。...

    C#自动识别URL编码,asp.net自动识别URL编码

    通过理解和熟练运用以上知识点,开发者可以有效地处理C#和ASP.NET中的URL编码问题,确保Web应用的稳定性和用户体验。在实践中,应始终关注编码和解码的正确性,以防止可能出现的乱码和其他错误。

    url加密URL编码 如“exit”编码为“%65%78%69%74”.zip

    这个压缩包文件的标题和描述提及了“url加密”和“URL编码”,实际上,它们指的是同一个概念,即URL编码(URL Encoding)。URL编码是根据统一资源定位符(Uniform Resource Locator)标准,将URL中的特殊字符转换为...

    URL编码解码器

    URL编码遵循统一资源标识符(URI)的规则,其中最常用的是基于百分号(%)的编码方法。每个非ASCII或特殊字符会被替换为"%xy"的形式,其中xy是该字符在UTF-8编码中的两个字节的十六进制表示。例如,空格字符(ASCII...

    Unity 字符串与Url 转换扩展

    "xxx".Convert2StrFromUrlStr 把Url编码格式的字符串转为普通字符串:"%E6%B5%8B%E8%AF%95%E5%AD%97%E7%AC%A6%E4%B8%B2%2B-%E2%80%94%E2%80%94_%40%23%24%25" 就会被解码为:"测试字符串+-——_@#$%

    URL 编码文档

    URL编码是一种在网络应用中将特殊字符转换为安全的ASCII字符序列的过程,以确保URL的正确传输和解析。URL,全称Uniform Resource Locator,是统一资源定位符,是互联网上资源的唯一地址。实际上,URL是URI(统一资源...

    codeURL编码解码工具

    本文将详细讲解"codeURL编码解码工具"的相关知识点,包括URL编码的原理、用途以及如何使用这类工具进行编码和解码。 URL(Uniform Resource Locator)即统一资源定位符,是互联网上的资源地址。它由协议类型、主机...

    每个web开发者都应该知道的url编码知识

    URL编码则是确保URL能在各种环境下正确传递和解释的关键技术之一。本文将深入探讨URL编码的基本概念、常见陷阱以及在Java环境中的正确实践。 #### 通用URL语法 URL具有明确的结构,由多个部分组成,例如scheme...

    PHP+JS Base64和URI编码解码混合使用

    其次,URI编码(也称为URL编码)是将非ASCII字符或特殊字符转换为百分号(%)加两位十六进制数的形式,以符合URI(统一资源标识符)的标准。在PHP中,我们可以使用`urlencode()`和`urldecode()`进行URI编码和解码;...

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

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

    url编码与解码

    - 虽然C++标准库没有直接提供URL编码和解码的函数,但可以使用第三方库,如`Poco::URI`库,它提供了方便的API来处理URL编码和解码。 7. **安全性和编码规范** - 在编码URL时,要注意遵守RFC 3986规范,确保正确...

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

    这个"URL编码转换器"项目是用C#语言编写的,旨在解决URI(统一资源标识符)编码过程中遇到的问题,特别是对于搜索引擎优化(SEO)时的需求。下面我们将深入探讨URL编码的相关知识点。 **URL编码基础** URL编码,也...

    PHP+JS Base64和URI编码解码

    URI(统一资源标识符)编码是为了解决URL(统一资源定位符)中可能包含特殊字符,如空格、#、%等,这些字符在URL中具有特殊含义,所以需要转义。在PHP中,我们可以使用`rawurlencode()`和`rawurldecode()`函数进行...

    Encode_ Decode Tools URL编码解码工具

    `Encode_ Decode Tools`是一款用于URL编码和解码的工具,它可以帮助开发者和用户方便地处理这些编码问题。这款工具可能提供了简单的用户界面,允许用户输入URL或字符串,然后点击按钮进行编码或解码操作。它支持对...

    .net c#URL加密

    1. 数据预处理:URL中不能包含非ASCII字符,因此需要先对URL进行编码,可以使用Uri.EscapeDataString方法进行URL编码。 2. 加密:选择合适的加密算法,如AES(高级加密标准)、RSA、或哈希函数。C#中的System....

    javascript 对url编码 解码

    JavaScript 中对 URL 编码和解码涉及到六个函数:escape、encodeURI、encodeURIComponent、unescape、decodeURI 和 decodeURIComponent。这六个函数的使用场景和特点分别是: escape 函数:escape 函数用于将字符串...

    Uri一个URI处理库

    - **避免硬编码URI**:使用Uri库来动态构建和解析URI,可以提高代码的灵活性和可维护性。 - **安全编码**:在处理用户输入时,始终使用Uri库提供的编码方法,防止URL注入攻击。 - **测试**:确保在修改URI组件后...

Global site tag (gtag.js) - Google Analytics