escape,encodeURI,encodeURIencodecomponenturi有什么区别

encodeURIComponent
escape区别 - flex爱好者 - ITeye技术网站
博客分类:
在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.S
public class EncodeURIExample extends Sprite {
public function EncodeURIExample() {
var uri:String = "/application.jsp?user=&user name='some user'&&/user&";
var encoded:String = encodeURI(uri);
var decoded:String = decodeURI(encoded);
trace(uri);
// /application.jsp?user=&user name='some user'&&/user&
trace(encoded);
// /application.jsp?user=%3Cuser%20name='some%20user'%3E%3C/user%3E
trace(decoded);
// /application.jsp?user=&user name='some user'&&/user&
public function encodeURIComponent(uri:String):String
将字符串编码为有效的 URI 组件。将 URI 的子字符串转换为一个字符串,其中除属于非常小的一组基本字符的字符外,其他所有字符都以 UTF-8 转义序列进行编码。
encodeURIComponent() 函数与 encodeURI() 函数不同,它仅适用于 URI 字符串的一部分(称为 URI 组件)。URI 组件是指出现在某些特殊字符之间的任何文本,
这些特殊字符称为组件分隔符(: / ; 和 ? )。
“http”和“”是常见的 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)。
yunzhongxia
浏览: 450550 次
来自: 北京
木子佳 写道楼主,想要源码学习,谢谢。kajiamuzi@16 ...
很好,是我需要的东东
大神,我想要源码,这个功能我折腾了好我啊fuhan247@16 ...
一样的代码,两台机器上面,完全不同的报错。。Flex实现htt ...JavaScript中有三个可以对字符串编码的函数,分别是: escape,encodeURI,encodeURIComponent,相应3个解码函数:unescape,decodeURI,decodeURIComponent 。
下面简单介绍一下它们的区别
1 escape()函数
定义和用法 escape() 函数可对字符串进行编码,这样就可以在所有的计算机上读取该字符串。
语法 escape(string)
参数& 描述& string& 必需。要被转义或编码的字符串。&
返回值 已编码的 string 的副本。其中某些字符被替换成了十六进制的转义序列。
说明 该方法不会对 ASCII 字母和数字进行编码,也不会对下面这些 ASCII 标点符号进行编码: - _ . ! ~ * ' ( ) 。其他所有的字符都会被转义序列替换。
2 encodeURI()函数 定义和用法 encodeURI() 函数可把字符串作为 URI 进行编码。
语法 encodeURI(URIstring)
参数& 描述& URIstring& 必需。一个字符串,含有 URI 或其他要编码的文本。&
返回值 URIstring 的副本,其中的某些字符将被十六进制的转义序列进行替换。
说明 该方法不会对 ASCII 字母和数字进行编码,也不会对这些 ASCII 标点符号进行编码: - _ . ! ~ * ' ( ) 。
该方法的目的是对 URI 进行完整的编码,因此对以下在 URI 中具有特殊含义的 ASCII 标点符号,encodeURI() 函数是不会进行转义的:;/?:@&=+$,#
3 encodeURIComponent() 函数
定义和用法 encodeURIComponent() 函数可把字符串作为 URI 组件进行编码。
语法 encodeURIComponent(URIstring)
参数& 描述& URIstring& 必需。一个字符串,含有 URI 组件或其他要编码的文本。&
返回值 URIstring 的副本,其中的某些字符将被十六进制的转义序列进行替换。
说明 该方法不会对 ASCII 字母和数字进行编码,也不会对这些 ASCII 标点符号进行编码: - _ . ! ~ * ' ( ) 。
其他字符(比如 :;/?:@&=+$,# 这些用于分隔 URI 组件的标点符号),都是由一个或多个十六进制的转义序列替换的。
提示和注释 提示:请注意 encodeURIComponent() 函数 与 encodeURI()
函数的区别之处,前者假定它的参数是 URI 的一部分(比如协议、主机名、路径或查询字符串)。因此 encodeURIComponent()
函数将转义用于分隔 URI 各个部分的标点符号。
&通过对三个函数的分析,我们可以知道:escape()除了 ASCII
字母、数字和特定的符号外,对传进来的字符串全部进行转义编码,因此如果想对URL编码,最好不要使用此方法。而encodeURI()
用于编码整个URI,因为URI中的合法字符都不会被编码转换。encodeURIComponent方法在编码单个URIComponent(指请求参
数)应当是最常用的,它可以讲参数中的中文、特殊字符进行转义,而不会影响整个URL。
1 escape()
&script type="text/javascript"&
document.write(escape("") + "&br /&")
document.write(escape("?!=()#%&"))
&/script&输出:
http%3A//.cn
%3F%21%3D%28%29%23%25%262 encodeURI()
&script type="text/javascript"&
document.write(encodeURI("")+ "&br /&")
document.write(encodeURI(" first/"))
document.write(encodeURI(",/?:@&=+$#"))
&/script&输出:
,/?:@&=+$#
对整个URL进行编码,而URL的特定标识符不会被转码。
3 encodeURIComponent()
&script type="text/javascript"&
document.write(encodeURIComponent(""))
document.write("&br /&")
document.write(encodeURIComponent(" 1/"))
document.write("&br /&")
document.write(encodeURIComponent(",/?:@&=+$#"))
&/script输出:
http%3A%2F%.cn http%3A%2F%.cn%2Fp%201%2F %2C%2F%3F%3A%40%26%3D%2B%24%23例2:&script language="javascript"&document.write('
&a href=""&退出&/a&');&/script&
对URL中的参数进行编码,因为参数也是一个URL,如果不编码会影响整个URL的跳转。
阅读(...) 评论()
作者:Tyler Ning
出处:/tylerdonet
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。JS编码函数以及encodeURI,escape,encodeURIComponent的区别
js对文字进行编码涉及3个函数:escape,encodeURI,encodeURIComponent,相应3个解码函数:,decodeURI,decodeURIComponent
1、传递参数时需要使用encodeURIComponent,这样组合的url才不会被#等特殊字符截断。&&&&&&&&&&&&&&&&&&&&&&&&&&&
language="javascript"&document.write('&a
href="/?logout&aid=7&
u='+encodeURIComponent("/bruce42")+'"&退出&/a&
');&/script&
2、进行url跳转时可以整体使用encodeURI
Location.href=encodeURI(/do/s?word=中国&ct=21);
使用这个方法编码的字符在PHP中可以使用urldecode()函数反编码
3、js使用数据时可以使用escape
escape对0-255以外的unicode值进行编码时输出%u****格式,其它情况下escape,encodeURI,encodeURIComponent编码结果相同。
escape不编码字符有69个:*,+,-,.,/,@,_,0-9,a-z,A-Z
encodeURI不编码字符有82个:!,#,$,&,',(,),*,+,,,-,.,/,:,;,=,?,@,_,~,0-9,a-z,A-Z
encodeURIComponent不编码字符有71个:!,
',(,),*,-,.,_,~,0-9,a-z,A-Z
附上这个三个函数的介绍:
对象编码以便它们能在所有计算机上可读,
escape(charString)
必选项 charstring
参数是要编码的任意 String 对象或文字。
方法返回一个包含了 charstring 内容的字符串值( Unicode 格式)。所有空格、标点、重音符号以及其他非 ASCII
字符都用 %xx 编码代替,其中 xx 等于表示该字符的十六进制数。例如,空格返回的是 " " 。
字符值大于 255 的以 %uxxxx
格式存储。
escape 方法不能够用来对统一资源标示码 (URI) 进行编码。对其编码应使用 encodeURI
和encodeURIComponent 方法。
将文本字符串编码为一个有效的统一资源标识符
encodeURI(URIString)
必选的 URIString
参数代表一个已编码的 URI。
方法返回一个编码的 URI。如果您将编码结果传递给 decodeURI,那么将返回初始的字符串。encodeURI
方法不会对下列字符进行编码:":"、"/"、";" 和 "?"。请使用 encodeURIComponent
方法对这些字符进行编码。
encodeURIComponent
将文本字符串编码为一个统一资源标识符 (URI)
的一个有效组件。
encodeURIComponent(encodedURIString)
encodedURIString 参数代表一个已编码的 URI 组件。
encodeURIComponent
方法返回一个已编码的 URI。如果您将编码结果传递给 decodeURIComponent,那么将返回初始的字符串。因为
encodeURIComponent 方法对所有的字符编码,请注意,如果该字符串代表一个路径,例如
/folder1/folder2/default.html,其中的斜杠也将被编码。这样一来,当该编码结果被作为请求发送到 web
服务器时将是无效的。如果字符串中包含不止一个 URI 组件,请使用 encodeURI 方法进行编码。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
从用 escape 方法编码的 String 对象中返回已解码的字符串。
function (charString : String) : String
charString
必选。要解码的 String 对象或文本。
方法返回一个包含 charstring 内容的字符串值。所有以 %xx 十六进制形式编码的字符都用 ASCII
字符集当中等效的字符代替。
以 %uxxxx 格式(Unicode 字符)编码的字符用十六进制编码 xxxx 的 Unicode 字符代替。
方法不应用于解码“统一资源标识符”(URI)。请改用 decodeURI 和
decodeURIComponent 方法。
decodeURI 方法 | decodeURIComponent 方法 | escape 方法 | String 对象
适用于:Global 对象
decodeURI 方法
返回一个已编码的统一资源标识符 (URI) 的非编码形式。
function decodeURI(URIstring : String) : String
必选。表示编码 URI 的字符串。
使用 decodeURI 方法代替已经过时的
decodeURI 方法返回一个字符串值。
如果 URIString 无效,将发生 URIError。
decodeURIComponent 方法 | encodeURI 方法
适用于:Global 对象
decodeURIComponent 方法
返回统一资源标识符 (URI) 的一个已编码组件的非编码形式。
function decodeURIComponent(encodedURIString : String) :
必选的 encodedURIString 参数是一个表示已编码的 URI 组件的值。
URIComponent 是一个完整的 URI 的一部分。
如果 encodedURIString 无效,则将产生 URIError。
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。escape、encodeURI、encodeURIComponent等方法的区别比较
字体:[ ] 类型:转载 时间:
escape 方法返回一个可在所有计算机上读取的编码 String 对象。function escape(charString : String) : String参数charString 必选。要编码的任何 String 对象或文本。 备注escape 方法返回一个包含 charstring 内容的字符串值(Unicode 格式)。所有空格、标点、重音符号以及任何其他非 ASCII 字符都用 %xx 编码替换,其中 xx 等于表示该字符的十六进制数。例如,空格返回为“%20”。字符值大于 255 的字符以 %uxxxx 格式存储。注意 escape 方法不能用来对“统一资源标识符”(URI) 进行编码。对其编码应使用 encodeURI 和 encodeURIComponent 方法。要求版本 1请参见encodeURI 方法 | encodeURIComponent 方法 | String 对象 | unescape 方法适用于:Global 对象encodeURI 方法返回编码为有效的统一资源标识符 (URI) 的字符串。function encodeURI(URIString : String) : String参数URIString 必选。表示编码 URI 的字符串。 备注encodeURI 方法返回一个已编码的 URI。如果将编码结果传递给 decodeURI,则将返回初始的字符串。encodeURI 不对下列字符进行编码:“:”、“/”、“;”和“?”。请使用 encodeURIComponent 对这些字符进行编码。要求版本 5.5请参见decodeURI 方法 | decodeURIComponent 方法适用于:Global 对象encodeURIComponent 方法返回编码为统一资源标识符 (URI) 的有效组件的字符串。function encodeURIComponent(encodedURIString : String) : String参数encodedURIString 必选。表示编码 URI 组件的字符串。 备注encodeURIComponent 方法返回一个已编码的 URI。如果将编码结果传递给 decodeURIComponent,则将返回初始的字符串。因为 encodeURIComponent 方法将对所有字符编码,请注意,如果该字符串代表一个路径,例如 /folder1/folder2/default.html,则其中的斜杠也将被编码,这样,当该字符串作为请求发送到 Web 服务器时它将是无效的。如果字符串中包含多个 URI 组件,请使用 encodeURI 方法进行编码。要求版本 5.5请参见decodeURI 方法 | decodeURIComponent 方法适用于:Global 对象unescape 方法从用 escape 方法编码的 String 对象中返回已解码的字符串。function unescape(charString : String) : String参数charString 必选。要解码的 String 对象或文本。 备注unescape 方法返回一个包含 charstring 内容的字符串值。所有以 %xx 十六进制形式编码的字符都用 ASCII 字符集当中等效的字符代替。以 %uxxxx 格式(Unicode 字符)编码的字符用十六进制编码 xxxx 的 Unicode 字符代替。注意 unescape 方法不应用于解码“统一资源标识符”(URI)。请改用 decodeURI 和 decodeURIComponent 方法。要求版本 1请参见decodeURI 方法 | decodeURIComponent 方法 | escape 方法 | String 对象适用于:Global 对象decodeURI 方法返回一个已编码的统一资源标识符 (URI) 的非编码形式。function decodeURI(URIstring : String) : String参数URIstring 必选。表示编码 URI 的字符串。 备注使用 decodeURI 方法代替已经过时的 unescape 方法。decodeURI 方法返回一个字符串值。如果 URIString 无效,将发生 URIError。要求版本 5.5请参见decodeURIComponent 方法 | encodeURI 方法适用于:Global 对象decodeURIComponent 方法返回统一资源标识符 (URI) 的一个已编码组件的非编码形式。function decodeURIComponent(encodedURIString : String) : String必选的 encodedURIString 参数是一个表示已编码的 URI 组件的值。备注URIComponent 是一个完整的 URI 的一部分。如果 encodedURIString 无效,则将产生 URIError。要求版本 5.5请参见decodeURI 方法 | encodeURI 方法适用于:Global 对象
您可能感兴趣的文章:
大家感兴趣的内容
12345678910
最近更新的内容
常用在线小工具

我要回帖

更多关于 encodeurlcomponent 的文章

 

随机推荐