encodeURI、encodeURIComponent、escape区别

  在as3中有三个可以对字符串编码的函数,分别是: escape,encodeURI,encodeURIComponent,相应3个解码函数:unescape,decodeURI,decodeURIComponent 。

 1 public function escape(str:String):String

将参数转换为字符串,并以 URL 编码格式对其进行编码,在这种格式中,大多数非字母数字的字符都替换为 % 十六进制序列。当用于 URL 编码的字符串时,百分号 (%) 用于引入转义字符,不与模运算符 (%) 等效。

下表显示不会 由 escape() 函数转换为转义序列的所有字符。

未编码的字符

0 1 2 3 4 5 6 7 8 9 
a b c d e f g h i j k l m n o p q r s t u v w x y z 
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
 
@ - _ . * + /

参数  str:String — 要转换为字符串并以 URL 编码格式进行编码的表达式。

返回 String — 一个 URL 编码的字符串。

 public function encodeURI(uri:String):String

将字符串编码为有效的 URI(统一资源标识符)。将完整的 URI 转换为一个字符串,其中除属于一小组基本字符的字符外,其他所有字符都以 UTF-8 转义序列进行编码。

下表显示不会 由 encodeURI 函数转换为 UTF-8 转义序列的基本字符的整个集合。

未编码的字符

0 1 2 3 4 5 6 7 8 9 
a b c d e f g h i j k l m n o p q r s t u v w x y z 
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 
; / ? : @ & = + $ , # 
- _ . ! ~ * ‘ ( )

参数  uri:String — 一个表示完整 URI 的字符串。

返回 String — 一个字符串,其中某些字符已编码为 UTF-8 转义序列。

示例

    import flash.display.Sprite;

    public class EncodeURIExample extends Sprite {
        public function EncodeURIExample() {
            var uri:String = "http://www.example.com/application.jsp?user=<user name=‘some user‘></user>";
            var encoded:String = encodeURI(uri);
            var decoded:String = decodeURI(encoded);
            trace(uri);        // http://www.example.com/application.jsp?user=<user name=‘some user‘></user>
            trace(encoded);    // http://www.example.com/application.jsp?user=%3Cuser%20name=‘some%20user‘%3E%3C/user%3E
            trace(decoded);    // http://www.example.com/application.jsp?user=<user name=‘some user‘></user>
        }
    }

  

 3  public function encodeURIComponent(uri:String):String

将字符串编码为有效的 URI 组件。将 URI 的子字符串转换为一个字符串,其中除属于非常小的一组基本字符的字符外,其他所有字符都以 UTF-8 转义序列进行编码。

encodeURIComponent() 函数与 encodeURI() 函数不同,它仅适用于 URI 字符串的一部分(称为 URI 组件)。URI 组件是指出现在某些特殊字符之间的任何文本,

这些特殊字符称为组件分隔符(: / ; 和 ? )。      “http”和“www.adobe.com”是常见的 URI 组件示例。

此函数与 encodeURI() 的另一个重要区别是:由于此函数假定它处理的是 URI 组件,因此它会将特殊分隔符字符 (; / ? : @ & = + $ , #) 视为应进行编码的常规文本。

下表显示不会 由 encodeURIComponent 函数转换为 UTF-8 转义序列的所有字符。

未编码的字符

0 1 2 3 4 5 6 7 8 9 
a b c d e f g h i j k l m n o p q r s t u v w x y z
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
- _ . ! ~ * ‘ ( )
 

参数  uri:String

返回 String

总结:1 如果要对一个URI全部进行编码,采用encodeURI函数。

2 如果要对URI中的参数,特别是中文参数、特殊字符进行转移,采用encodeURIComponent函数。

3 escape()除了 ASCII 字母、数字和特定的符号外,对传进来的字符串全部进行转义编码,因此如果想对URL编码,最好不要使用此方法。

4 tomcat能解析 escape,但是websphere却不能解析,就会导致找不到url资源(例如:1.swf)。

时间: 2024-12-13 00:12:22

encodeURI、encodeURIComponent、escape区别的相关文章

escape,encodeURI,encodeURIComponent的区别

escape是对字符串进行编码而另外两种是对URL. encodeURI方法不会对下列字符编码 ASCII字母 数字 [email protected]#$&*()=:/,;?+'encodeURIComponent方法不会对下列字符编码 ASCII字母 数字 ~!*()' encodeURIComponent比encodeURI编码的范围更大. 1.编码字符串,用escape(). 2.编码url,且该url需要使用,用encodeURI,http://,encodeURIComponent(

escape()、encodeURI()、encodeURIComponent()的区别和用法

escape()  解码unescape() 对字符串进行进行编码. 定义和用法 escape() 函数可对字符串进行编码,这样就可以在所有的计算机上读取该字符串. 语法 escape(String) 参数                      描述 String          必需.要被转义或编码的字符串. 返回值 已编码的 string 的副本.其中某些字符被替换成了十六进制的转义序列. 说明 该方法不会对 ASCII 字母和数字进行编码,也不会对下面这些 ASCII 标点符号进行编

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

url的三个js编码函数escape(),encodeURI(),encodeURIComponent()简介 2014年10月12日 16806次浏览 引子 浏览器URl地址,上网一定会用到,但是浏览器地址有中文或者浏览器url参数操作的时候,经常会用到encodeURIComponent()和decodeURIComponent()以及encodeURI()等等.关于浏览器参数操作,请看文章http://www.haorooms.com/post/js_url_canshu ,今天主要讲讲e

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

引子 浏览器URl地址,上网一定会用到,但是浏览器地址有中文或者浏览器url参数操作的时候,经常会用到encodeURIComponent()和decodeURIComponent()以及encodeURI()等等.关于浏览器参数操作,请看文章http://www.haorooms.com/post/js_url_canshu ,今天主要讲讲escape(),encodeURI(),encodeURIComponent()这几个函数的用法和区别. 为啥会有浏览器编码这一说法 一般来说,URL只能

JavaScript中有对字符串编码的三个函数:escape,encodeURI,encodeURIComponent

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

JavaScript中有三个可以对字符串编码的函数,分别是: escape(),encodeURI(),encodeURIComponent()

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

escape,encodeURI,encodeURIComponent

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

js escape, encodeURI, encodeURIComponent

escape,   encodeURI,   encodeURIComponent 1)基本介绍 js 对文字进行编码涉及3个函数:escape,encodeURI,encodeURIComponent, 相应3个解码函数:decodeURI,decodeURIComponent 2)用途 1.   传递参数时需要使用encodeURIComponent,这样组合的url才不会被#等特殊字符截断. 例如:"http://www.baidu.com?name="+encodeURICom

escape, encodeURI, encodeURIComponent 的使用情况

escape, encodeURI, encodeURIComponent 的使用情况: 1.js使用数据时可以使用escape: 2.传递参数时需要使用encodeURIComponent,这样组合的url才不会被#等特殊字符截断: 3.进行url跳转时可以整体使用encodeURI.例如: Location.href = encodeURI(“http://www.javaweb.cc”): 4.escape对0-255以外的unicode值进行编码时输出%u****格式,其它情况下esca