javascript中的urlencode

本文深入探讨了JavaScript中用于对文字进行编码和解码的三个关键函数:escape, encodeURI, encodeURIComponent,以及它们对应的解码函数:unescape, decodeURI, decodeURIComponent。详细解释了每个函数的作用、编码规则及适用场景。
摘要由CSDN通过智能技术生成
javascript中对文字进行编码涉及3个函数:escape,encodeURI,encodeURIComponent,对应的有3个解码函数:unescape,decodeURI,decodeURIComponent
1,escape:
采用ISO Latin字符集对指定的字符串进行编码。所有的空格符、标点符号、特殊字符以及更多有联系非ASCII字符都将被转化成%xx各式的字符编码(xx等于该字符在字符集表里面的编码的16进制数字)。比如,空格符对应的编码是%20。

2,encodeURI:
把URI字符串采用UTF-8编码各式转化成escape各式的字符串。
不会被此窍门编码的字符:! @ # $& * ( ) = : / ; ? + '.
进行url跳转时可以整体使用encodeURI例如:Location.href="/encodeURI"("http://cang.baidu.com/do/s?word=百度&ct=21");

3,encodeURIComponent:
把URI字符串采用UTF-8编码各式转化成escape各式的字符串。与encodeURI()相比,那个窍门将对更多的字符停止编码,比如 / 等字符。所以假如字符串里面包含了URI的几个部份的话,别用那个窍门来停止编码,否则 / 字符被编码之后URL将呈现错误。
最多使用的应为encodeURIComponent,它是将中文、韩文等特殊字符转换成utf-8格式的url编码,所以如果给后台传递参数需要使用encodeURIComponent时需要后台解码对utf-8支持(form中的编码方式和当前页面编码方式相同)   

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

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


本文整理自网络

JavaScript,可以使用`encodeURI()`和`encodeURIComponent()`函数来进行URL编码。其,`encodeURI()`函数用于对整个URL进行编码,而`encodeURIComponent()`函数则用于对URL的参数进行编码。这两个函数都是按照UTF-8编码规则进行编码的。 以下是使用`encodeURIComponent()`函数对URL参数进行编码的例子: ```javascript var url = "http://www.example.com/search?q=JavaScript urlencode 编码"; var encodedUrl = encodeURIComponent(url); console.log(encodedUrl); // 输出:http%3A%2F%2Fwww.example.com%2Fsearch%3Fq%3DJavaScript%20%E4%B8%AD%E7%9A%84%20urlencode%20%E7%BC%96%E7%A0%81 ``` 如果需要按照ANSI编码规则进行URL编码,可以自己编写代码实现。以下是一个使用VBScript自定义函数实现ANSI编码的例子: ```javascript function encodeUrl(url) { var shell = new ActiveXObject("WScript.Shell"); var encodedUrl = shell.ExpandEnvironmentStrings("%TEMP%\\encodedUrl.txt"); var fso = new ActiveXObject("Scripting.FileSystemObject"); var file = fso.CreateTextFile(encodedUrl, true); file.Write(url); file.Close(); var encodedUrlContent = shell.Exec("cmd /c cscript //nologo encodeUrl.vbs " + encodedUrl).StdOut.ReadAll(); fso.DeleteFile(encodedUrl); return encodedUrlContent; } ``` 其,`encodeUrl.vbs`是一个VBScript文件,用于实现ANSI编码。以下是`encodeUrl.vbs`的代码: ```vbscript Dim objArgs Set objArgs = WScript.Arguments Dim fso, file, url, encodedUrl Set fso = CreateObject("Scripting.FileSystemObject") Set file = fso.OpenTextFile(objArgs(0), 1) url = file.ReadAll file.Close encodedUrl = "" For i = 1 To Len(url) If Asc(Mid(url, i, 1)) < 128 Then encodedUrl = encodedUrl & Chr(Asc(Mid(url, i, 1))) Else encodedUrl = encodedUrl & "%" & Hex(Asc(Mid(url, i, 1))) End If Next WScript.StdOut.Write encodedUrl ``` 使用以上代码,可以实现按照ANSI编码规则进行URL编码。但需要注意的是,这种方法并不是标准的URL编码方式,可能会导致一些兼容性问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值