escape,decode encode区别URI,decode encode区别URIComponent有什么区别

深入分析escape()、encodeURI()、encodeURIComponent()的区别及示例
投稿:hebedich
字体:[ ] 类型:转载 时间:
这篇文章主要介绍了escape()、encodeURI()、encodeURIComponent()的区别,需要的朋友可以参考下
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(".cn/") + "&br /&")
document.write(escape("?!=()#%&"))
http%3A//.cn
%3F%21%3D%28%29%23%25%26
2 encodeURI()
&script type="text/javascript"&
document.write(encodeURI(".cn/")+ "&br /&")
document.write(encodeURI(".cn/My first/"))
document.write(encodeURI(",/?:@&=+$#"))
.cn/My%20first/
,/?:@&=+$#
对整个URL进行编码,而URL的特定标识符不会被转码。
3 encodeURIComponent()
&script type="text/javascript"&
document.write(encodeURIComponent(".cn/"))
document.write("&br /&")
document.write(encodeURIComponent(".cn/p 1/"))
document.write("&br /&")
document.write(encodeURIComponent(",/?:@&=+$#"))
http%3A%2F%.cn
http%3A%2F%.cn%2Fp%201%2F
%2C%2F%3F%3A%40%26%3D%2B%24%23
&script language="javascript"&document.write('
&a href="/?logout&aid=7&u='+encodeURIComponent(" rel="external nofollow" /bruce42")+'"&退出&/a&');&/script&
对URL中的参数进行编码,因为参数也是一个URL,如果不编码会影响整个URL的跳转。
您可能感兴趣的文章:
大家感兴趣的内容
12345678910
最近更新的内容
常用在线小工具&>&url的三个js编码函数escape(),encodeURI(),encodeURIComponent()简介
url的三个js编码函数escape(),encodeURI(),encodeURIComponent()简介
上传大小:6KB
解决url传递中文乱码问题,解决后台接收到的汉字是乱码的
综合评分:0(0位用户评分)
所需积分/C币:
下载个数:1
{%username%}回复{%com_username%}{%time%}\
/*点击出现回复框*/
$(".respond_btn").on("click", function (e) {
$(this).parents(".rightLi").children(".respond_box").show();
e.stopPropagation();
$(".cancel_res").on("click", function (e) {
$(this).parents(".res_b").siblings(".res_area").val("");
$(this).parents(".respond_box").hide();
e.stopPropagation();
/*删除评论*/
$(".del_comment_c").on("click", function (e) {
var id = $(e.target).attr("id");
$.getJSON('/index.php/comment/do_invalid/' + id,
function (data) {
if (data.succ == 1) {
$(e.target).parents(".conLi").remove();
alert(data.msg);
$(".res_btn").click(function (e) {
var q = $("#form1").serializeArray();
console.log(q);
var res_area_r = $.trim($(".res_area_r").val());
if (res_area_r == '') {
$(".res_text").css({color: "red"});
$.post("/index.php/comment/do_comment_reply/", q,
function (data) {
if (data.succ == 1) {
var $target,
evt = e || window.
$target = $(evt.target || evt.srcElement);
var $dd = $target.parents('dd');
var $wrapReply = $dd.find('.respond_box');
console.log($wrapReply);
var mess = $(".res_area_r").val();
var str = str.replace(/{%header%}/g, data.header)
.replace(/{%href%}/g, 'http://' + window.location.host + '/user/' + data.username)
.replace(/{%username%}/g, data.username)
.replace(/{%com_username%}/g, _username)
.replace(/{%time%}/g, data.time)
.replace(/{%id%}/g, data.id)
.replace(/{%mess%}/g, mess);
$dd.after(str);
$(".respond_box").hide();
$(".res_area_r").val("");
$(".res_area").val("");
$wrapReply.hide();
alert(data.msg);
}, "json");
/*删除回复*/
$(".rightLi").on("click",'.del_comment_r', function (e) {
var id = $(e.target).attr("id");
$.getJSON('/index.php/comment/do_comment_del/' + id,
function (data) {
if (data.succ == 1) {
$(e.target).parent().parent().parent().parent().parent().remove();
$(e.target).parents('.res_list').remove()
alert(data.msg);
//填充回复
function KeyP(v) {
$(".res_area_r").val($.trim($(".res_area").val()));
评论共有0条
审核通过送C币
Structs-jar包合集(1.3、2.3、2.5)
创建者:weixin_
课程设计资源
创建者:xunalove
创建者:lzce111
上传者其他资源上传者专辑
课程资源热门标签
VIP会员动态
下载频道积分规则调整V1710.18
CSDN下载频道积分调整公告V1710.17
开通VIP,海量IT资源任性下载
spring mvc+mybatis+mysql+maven+bootstrap 整合实现增删查改简单实例.zip
CSDN&VIP年卡&4000万程序员的必选
为了良好体验,不建议使用迅雷下载
url的三个js编码函数escape(),encodeURI(),encodeURIComponent()简介
会员到期时间:
剩余下载个数:
剩余C币:593
剩余积分:786
为了良好体验,不建议使用迅雷下载
积分不足!
资源所需积分/C币
当前拥有积分
您可以选择
程序员的必选
绿色安全资源
资源所需积分/C币
当前拥有积分
当前拥有C币
(仅够下载10个资源)
全站1200个资源免积分下载
为了良好体验,不建议使用迅雷下载
资源所需积分/C币
当前拥有积分
当前拥有C币
全站1200个资源免积分下载
资源所需积分/C币
当前拥有积分
当前拥有C币
您的积分不足,将扣除 10 C币
全站1200个资源免积分下载
为了良好体验,不建议使用迅雷下载
你当前的下载分为234。
你还不是VIP会员
开通VIP会员权限,免积分下载
你下载资源过于频繁,请输入验证码
你下载资源过于频繁,请输入验证码
您因违反CSDN下载频道规则而被锁定帐户,如有疑问,请联络:!
若举报审核通过,可奖励20下载分
被举报人:
举报的资源分:
请选择类型
资源无法下载
资源无法使用
标题与实际内容不符
含有危害国家安全内容
含有反动色情等内容
含广告内容
版权问题,侵犯个人或公司的版权
*详细原因:
url的三个js编码函数escape(),encodeURI(),encodeURIComponent()简介JavaScript中有三个可以对字符串编码的函数,分别是:
escape,encodeURI,encodeURIComponent,相应3个解码函数:unescape,decodeURI,decodeURIComponent
下面简单介绍一下它们的区别
1 escape()函数
定义和用法
escape() 函数可对字符串进行编码,这样就可以在所有的计算机上读取该字符串。
escape(string)
必需。要被转义或编码的字符串。
已编码的 string 的副本。其中某些字符被替换成了十六进制的转义序列。
该方法不会对 ASCII 字母和数字进行编码,也不会对下面这些 ASCII 标点符号进行编码: - _ . ! ~ * ' ( ) 。其他所有的字符都会被转义序列替换。
2 encodeURI()函数
定义和用法
encodeURI() 函数可把字符串作为 URI 进行编码。
encodeURI(URIstring)
必需。一个字符串,含有 URI 或其他要编码的文本。
URIstring 的副本,其中的某些字符将被十六进制的转义序列进行替换。
该方法不会对 ASCII 字母和数字进行编码,也不会对这些 ASCII 标点符号进行编码: - _ . ! ~ * ' ( ) 。
该方法的目的是对 URI 进行完整的编码,因此对以下在 URI 中具有特殊含义的 ASCII 标点符号,encodeURI() 函数是不会进行转义的:;/?:@&=+$,#
encodeURIComponent() 函数
定义和用法
encodeURIComponent() 函数可把字符串作为 URI 组件进行编码。
encodeURIComponent(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(&.cn&) + &&br /&&)
document.write(escape(&?!=()#%&&))
http%3A//.cn
%3F%21%3D%28%29%23%25%26
2 encodeURI()
&script type=&text/javascript&&
document.write(encodeURI(&.cn&)+ &&br /&&)
document.write(encodeURI(&.cn/My first/&))
document.write(encodeURI(&,/?:@&=+$#&))
.cn/My%20first/
,/?:@&=+$#
对整个URL进行编码,而URL的特定标识符不会被转码。
3 encodeURIComponent()
&script type=&text/javascript&&
document.write(encodeURIComponent(&.cn&))
document.write(&&br /&&)
document.write(encodeURIComponent(&.cn/p 1/&))
document.write(&&br /&&)
document.write(encodeURIComponent(&,/?:@&=+$#&))
http%3A%2F%.cn
http%3A%2F%.cn%2Fp%201%2F
%2C%2F%3F%3A%40%26%3D%2B%24%23
&script language=&javascript&&document.write('
退出&/a&');&/script&
对URL中的参数进行编码,因为参数也是一个URL,如果不编码会影响整个URL的跳转。
本文已收录于以下专栏:
相关文章推荐
escape()、encodeURI()、decodeURI()、encodeURIComponent()、decodeURIComp...
JavaScript中有三个可以对字符串编码的函数,分别是: escape,encodeURI,encodeURIComponent,相应3个解码函数:unescape,decodeURI,decod...
JavaScript中有三个可以对字符串编码的函数,分别是: escape,encodeURI,encodeURIComponent,相应3个解码函数:unescape,decodeURI,decod...
JavaScript中有三个可以对字符串编码的函数,分别是: escape,encodeURI,encodeURIComponent,相应3个解码函数:unescape,decodeURI,decod...
JavaScript中有三个可以对字符串编码的函数,分别是: escape,encodeURI,encodeURIComponent,相应3个解码函数:unescape,decodeURI,decod...
JavaScript中有三个可以对字符串编码的函数,分别是: escape,encodeURI,encodeURIComponent,相应3个解码函数:unescape,decodeURI,decod...
JavaScript中有三个可以对字符串编码的函数,分别是: escape,encodeURI,encodeURIComponent,相应3个解码函数:unescape,decodeURI,decod...
escape()、encodeURI()、encodeURIComponent()区别详解
JavaScript中有三个可以对字符串编码的函数,分别是: escape,encodeURI,e...
在用javascript对URL字符串进行编码中,虽然escape()、encodeURI()、encodeURIComponent()三种方法都能对一些影响URL完整性的特殊字符进行过滤。但后两者是...
他的最新文章
讲师:刘文志
讲师:陈伟
您举报文章:
举报原因:
原文地址:
原因补充:
(最多只允许输入30个字)博客分类:
escape(unescape),encodeURI(decodeURI)和encodeURIComponent(decodeURIComponent)都是用来编(解)码字符以利于在网络上传输和解析。
& 把特殊字符(不包括 + - * / . _ @)转化成相应的ASCII表示法(%XX)或者Unicode表示法(%uXXXX)
document.write(escape("+-*/._@ '()阳春三月"));
& 输出结果:
& +-*/._@%20%27%28%29%u%u4E09%u6708
& 从结果中可以看出,+-*/._@不会被编码,空格转成%20,单引号转成%27,圆括号转成%28和%29,四个汉字用Unicode编码成四个%uXXXX序列。
& 如果我们对escape的字符序列再次调用escape:
&
document.write(escape(escape("+-*/._@ '()阳春三月")));
& 输出结果:
& +-*/._@%28%2529%25u5%25u4E09%25u6708
& 可以看出,escape会编码已经escape过的字符%为%25
& 调用unescape进行解码:
document.write(unescape(escape(escape("+-*/._@ '()阳春三月"))));
& 输出结果:
& +-*/._@%20%27%28%29%u%u4E09%u6708
&
& 再次调用escape进行解码:
document.write(unescape(unescape(escape(escape("+-*/._@ '()阳春三月")))));
& 输出结果:
& +-*/._@ '()阳春三月
& 所以在编写代码时,要注意被操作字符序列是否已经escape或unescape过。
2. encodeURI和encodeURIComponent
& 和escape类似,不同的是
& a. 它们不会对(' tilde(加在西班牙语n字上的发音符号) ())编码:
document.write(encodeURI("+-*/._@ '()"));
& 输出结果:
& +-*/._@%20'()
& b. 它们编码Unicode字符也不同,输出为:%XX%XX or %XX%XX%XX
&
document.write(encodeURI("阳春三月"));
& 输出结果:
& %E9%98%B3%E6%98%A5%E4%B8%89%E6%9C%88
& encodeURI把每个中文字符都转成了%XX%XX%XX格式
& 3. encodeURI和encodeURIComponent区别:
& encodeURIComponent会编码encodeURI不管的(, / ? : @ & = + $ #),其中,(+ / @)escape也不闻不问
document.write(encodeURI(",/?:@&=+$#"));
document.write(encodeURIComponent(",/?:@&=+$#"));
& 输出结果:
& ,/?:@&=+$#
& %2C%2F%3F%3A%40%26%3D%2B%24%23
总结:
& escape是元老级的方法,很多浏览器表示都支持,适用于html字符编码
& encodeURI和encodeURIComponent出道较晚,适用于uri字符编码,并且后者对很多URI中可能出现的特殊字符都进行编码
浏览: 766514 次
来自: 杭州
这个。。是api说明吧。。
请问大文件如何处理?按你这种方式的话,文件超过200M时就会报 ...
lwj1113 写道谢谢博主这么细致的在系列五中通过 ...
谢谢博主这么细致的在系列五中通过testng测试类跑 ...
(window.slotbydup=window.slotbydup || []).push({
id: '4773203',
container: s,
size: '200,200',
display: 'inlay-fix'

我要回帖

更多关于 escape sl1 sl2区别 的文章

 

随机推荐