细讲encodeURI和encodeURIComponent以及escape的区别与应用

首先,我们都知道这三个东西都是用来编码的

先来说encodeURI()和encodeURIComponent()

这两个是在转换url时候用来编码解码用的。

有编码就会有解码,

解码就是decodeURI()和decodeURIComponent()

他们的用法很简单,在参数中带入要转码的文字就可实现目的

如:

  encodeURI("我是要编码的文字")

  decodeURI("我是要解码的文字")

  encodeURIComponent("我是要编码的文字")

  decodeURIComponent("我是要解码的文字")


而encodeURI()和encodeURIComponent()的区别其实并不大

主要区别在于:

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

encodeURIComponent不编码字符有71个:!, ‘,(,),*,-,.,_,~,0-9,a-z,A-Z

encodeURI主要用于直接赋值给地址栏时候:

1 location.href=encodeURI("http://www.cnblogs.com/Tezml/");

而encodeURIComponent主要用于url的query参数:


1

location.href="http://www.cnblogs.com/Tezml/test.php?a="+encodeURIComponent("我就是我");

而escape,相比于上面那两个,就有所不同了

escape()是编码,unescape()是解码;

escape 方法

对 String 对象编码以便它们能在所有计算机上可读,

escape(charString)
必选项 charstring 参数是要编码的任意 String 对象或文字。

说明
escape 方法返回一个包含了 charstring 内容的字符串值( Unicode 格式)。所有空格、标点、重音符号以及其他非 ASCII 字符都用 %xx 编码代替,

其中 xx 等于表示该字符的十六进制数。例如,空格返回的是 "%20" 。

字符值大于 255 的以 %uxxxx 格式存储。

escape不编码字符有69个:*,+,-,.,/,@,_,0-9,a-z,A-Z

注意   escape 方法不能够用来对统一资源标示码 (URI) 进行编码。对其编码应使用 encodeURI 和encodeURIComponent 方法。

最后上一段关于编码解码的demo

<!DOCTYPE html>
<html>
 <head>
  <title>Tezml_编码解码测试</title>
  <meta charset="utf-8">
  <meta name="author" content="Tezml" />
  <meta name="copyright" content="Tezml" />
  <meta name="description" content="Tezml" />
  <script type="text/javascript" src="http://cdn.bootcss.com/jquery/1.11.2/jquery.min.js"></script>
</head>
<body>
<div id="wz1"></div>
<div id="wz2"></div>
<div id="wz3"></div>
<div id="wz4"></div>
<div id="wz5"></div>
<div id="wz6"></div>
<div id="wz7"></div>
<div id="wz8"></div>
<div id="wz9"></div>
<div id="wz10"></div>
<div id="wz11"></div>
<div id="wz12"></div>
</body>
<script type="text/javascript">
var chinese="请叫我中文"
var english="place tall me englash"
var Monster=":#&$/@"

$("#wz1").html(encodeURI(chinese))//编码 %E8%AF%B7%E5%8F%AB%E6%88%91%E4%B8%AD%E6%96%87

$("#wz2").html(decodeURI(chinese))//解码 请叫我中文

$("#wz3").html(encodeURI(english))//编码 place%20tall%20me%20englash

$("#wz4").html(decodeURI(english))//解码 place tall me englash

$("#wz5").html(encodeURIComponent(Monster))//编码 %3A%23%26%24%2F%40

$("#wz6").html(encodeURI(Monster))//编码 :#&$/@

$("#wz7").html(escape(chinese))//编码 %u8BF7%u53EB%u6211%u4E2D%u6587

$("#wz8").html(escape(english))//编码 place%20tall%20me%20englash

$("#wz9").html(escape(Monster))//编码 %3A%23%26%24/@

$("#wz10").html(unescape(chinese))//编码 请叫我中文

$("#wz11").html(unescape(english))//编码 place tall me englash

$("#wz12").html(unescape(Monster))//编码 :#&$/@

</script>
</html>
时间: 2025-01-01 23:17:32

细讲encodeURI和encodeURIComponent以及escape的区别与应用的相关文章

encodeURI、encodeURIComponent、escape区别

在as3中有三个可以对字符串编码的函数,分别是: escape,encodeURI,encodeURIComponent,相应3个解码函数:unescape,decodeURI,decodeURIComponent .  1 public function escape(str:String):String 将参数转换为字符串,并以 URL 编码格式对其进行编码,在这种格式中,大多数非字母数字的字符都替换为 % 十六进制序列.当用于 URL 编码的字符串时,百分号 (%) 用于引入转义字符,不与

【转】escape()、encodeURI()、encodeURIComponent()区别详解

escape().encodeURI().encodeURIComponent()区别详解 原文链接:http://www.cnblogs.com/tylerdonet/p/3483836.html JavaScript中有三个可以对字符串编码的函数,分别是: escape,encodeURI,encodeURIComponent,相应3个解码函数:unescape,decodeURI,decodeURIComponent . 下面简单介绍一下它们的区别 1 escape()函数 定义和用法 e

escape()、encodeURI()、encodeURIComponent()区别详解

JavaScript中有三个可以对字符串编码的函数,分别是: escape,encodeURI,encodeURIComponent,相应3个解码函数:unescape,decodeURI,decodeURIComponent . 下面简单介绍一下它们的区别 1 escape()函数 定义和用法 escape() 函数可对字符串进行编码,这样就可以在所有的计算机上读取该字符串. 语法 escape(string) 参数  描述  string  必需.要被转义或编码的字符串. 返回值 已编码的

【转】简单明了区分escape、encodeURI和encodeURIComponent

原文链接 奇葩一朵朵 – http://www.cnblogs.com/season-huang/ 一.前言 讲这3个方法区别的文章太多了,但是大部分写的都很绕.本文试图从实践角度去讲这3个方法. 二.escape和它们不是同一类 简单来说,escape是对字符串(string)进行编码(而另外两种是对URL),作用是让它们在所有电脑上可读.编码之后的效果是%XX或者%uXXXX这种形式.其中 ASCII字母.数字.@*/+ ,这几个字符不会被编码,其余的都会.最关键的是,当你需要对URL编码时

简单明了区分escape、encodeURI和encodeURIComponent(转)

一.前言 讲这3个方法区别的文章太多了,但是大部分写的都很绕.本文试图从实践角度去讲这3个方法. 二.escape和它们不是同一类 简单来说,escape是对字符串(string)进行编码(而另外两种是对URL),作用是让它们在所有电脑上可读.编码之后的效果是%XX或者%uXXXX这种形式.其中 ASCII字母.数字.@*/+ ,这几个字符不会被编码,其余的都会.最关键的是,当你需要对URL编码时,请忘记这个方法,这个方法是针对字符串使用的,不适用于URL.事实上,这个方法我还没有在实际工作中用

简单明了区分escape、encodeURI和encodeURIComponent

一.前言 讲这3个方法区别的文章太多了,但是大部分写的都很绕.本文试图从实践角度去讲这3个方法. 二.escape和它们不是同一类 简单来说,escape是对字符串(string)进行编码(而另外两种是对URL),作用是让它们在所有电脑上可读.编码之后的效果是%XX或者%uXXXX这种形式.其中 ASCII字母.数字.@*/+ ,这几个字符不会被编码,其余的都会.最关键的是,当你需要对URL编码时,请忘记这个方法,这个方法是针对字符串使用的,不适用于URL.事实上,这个方法我还没有在实际工作中用

简明区分escape、encodeURI和encodeURIComponent

一.前言 讲这3个方法区别的文章太多了,但是大部分写的都很绕.本文试图从实践角度去讲这3个方法. 二.escape和它们不是同一类 简单来说,escape是对字符串(string)进行编码(而另外两种是对URL),作用是让它们在所有电脑上可读.编码之后的效果是%XX或者%uXXXX这种形式.其中 ASCII字母.数字.@*/+ ,这几个字符不会被编码,其余的都会.最关键的是,当你需要对URL编码时,请忘记这个方法,这个方法是针对字符串使用的,不适用于URL.事实上,这个方法我还没有在实际工作中用

escape、encodeURI和encodeURIComponent的区别

一.escape和它们不是同一类 简单来说,escape是对字符串(string)进行编码(而另外两种是对URL),作用是让它们在所有电脑上可读.编码之后的效果是%XX或者%uXXXX这种形式.其中 ASCII字母.数字.@*/+ ,这几个字符不会被编码,其余的都会.最关键的是,当你需要对URL编码时,请忘记这个方法,这个方法是针对字符串使用的,不适用于URL.事实上,这个方法我还没有在实际工作中用到过,所以就不多讲了. 二.最常用的encodeURI和encodeURIComponent 对U

JS-编码函数:escape(),encodeURI(),encodeURIComponent()

1.escape() escape()是js编码函数中最古老的一个.虽然这个函数现在已经不提倡使用了,但是由于历史原因,很多地方还在使用它,所以有必要先从它讲起. 实际上,escape()不能直接用于URL编码,它的真正作用是返回一个字符的Unicode编码值.比如"春节"的返回结果是%u6625%u8282,也就是说在Unicode字符集中,"春"是第6625个(十六进制)字符,"节"是第8282个(十六进制)字符. escape("