网上有很多文字作品写涉及在JS中呈现类似UrlEncode功能时都是自定义参数来呈现,其实JS中本身就有那样的参数。
参数parameter由于用类似URL的形式传过去 , 所以别直接就那样赋值
以下是对变量值的URL编码总结 : 意见用encodeURIComponent() , GET 和POST方法都能够发送过去
Java编程script中存在几种对URL字符串停止编码的窍门:escape(),encodeURI(),以及encodeURIComponent()。这几种编码所起的功能各不相同。
escape() 窍门:
采用ISO Latin字符集对指定的字符串停止编码。所有的空格符、标点符号、特殊字符以及更多有联系非ASCII字符都将被转化成%xx各式的字符编码(xx等于该字符在字符集表里面的编码的16进制数字)。比如,空格符对应的编码是%20。
不会被此窍门编码的字符: @ * / +
encodeURI() 窍门:
把URI字符串采用UTF-8编码各式转化成escape各式的字符串。
不会被此窍门编码的字符:! @ # $& * ( ) = : / ; ? + '
encodeURIComponent() 窍门:
把 URI字符串采用UTF-8编码各式转化成escape各式的字符串。与encodeURI()相比,那个窍门将对更多的字符停止编码,比如 / 等字符。所以假如字符串里面包含了URI的几个部份的话,别用那个窍门来停止编码,否则 / 字符被编码之后URL将呈现错误。
不会被此窍门编码的字符:! * ( ) '
因 此,对于汉文字符串来说,假如不期望把字符串编码各式转化成UTF-8各式的(比如原页面和目的页面的charset是一致的时候),只需求应用 escape。假如你的页面是GB2312或者更多有联系的编码,而接受参数parameter的页面是UTF-8编码的,就要采用encodeURI或 者encodeURIComponent。
用JavaScript实现UrlEncode和UrlDecode的脚本代码

Function str2asc(strstr)
str2asc = hex ( asc (strstr))
End Function
Function asc2str(ascasc)
asc2str = chr (ascasc)
End Function
</ script >
< script type = " text/javascript " >
/* 这里开始时UrlEncode和UrlDecode函数 */
function UrlEncode(str){
var ret = "" ;
var strSpecial = " !\ " #$% & ' ()*+,/:;<=>?[]^`{|}~%";
var tt = "" ;
for (var i = 0 ;i < str.length;i ++ ){
var chr = str.charAt(i);
var c = str2asc( chr );
tt += chr + " : " + c + " n " ;
if (parseInt( " 0x " + c) > 0x7f){
ret += " % " + c.slice( 0 , 2 ) + " % " + c.slice( - 2 );
} else {
if ( chr == " " )
ret += " + " ;
else if (strSpecial.indexOf( chr )! =- 1 )
ret += " % " + c.toString( 16 );
else
ret += chr ;
}
}
return ret;
}
function UrlDecode(str){
var ret = "" ;
for (var i = 0 ;i < str.length;i ++ ){
var chr = str.charAt(i);
if ( chr == " + " ){
ret += " " ;
} else if ( chr == " % " ){
var asc = str.substring(i + 1 ,i + 3 );
if (parseInt( " 0x " + asc ) > 0x7f){
ret += asc2str(parseInt( " 0x " + asc + str.substring(i + 4 ,i + 6 )));
i += 5 ;
} else {
ret += asc2str(parseInt( " 0x " + asc ));
i += 2 ;
}
} else {
ret += chr ;
}
}
return ret;
}
alert(UrlDecode( " %C2%D2%C2%EB " ));
</ script >
JavaScript 中实现 ANSI(gb2312) 的 URL 编码与解码(URLEncode、URLDecode)
encodeURI 和 encodeURIComponent 是按 UTF-8 对 URL 编码的,下面的代码是按 ANSI 对 URL进行编码和解码的。使用了两个 vbscript 自定义函数,请参见 JavaScript 函数如何调用 VBScript 函数。
以下整理自 Moocky.Mark's Blog。

< ! --
function str2asc(strstr)
str2asc = hex ( asc (strstr))
end function
function asc2str(ascasc)
asc2str = chr (ascasc)
end function
' -->
</ script >
< script type = " text/javascript " >
< ! --
function urlEncode(str)
{
var ret = "" ;
var strSpecial = " !\ " #$% & ’() *+ , / :; <=> ?[] ^ `{|}~% " ;
var tt = "" ;
for (var i = 0 ; i < str.length; i ++ )
{
var chr = str.charAt(i);
var c = str2asc( chr );
tt += chr + " : " + c + " n " ;
if (parseInt( " 0x " + c) > 0x7f)
{
ret += " % " + c.slice( 0 , 2 ) + " % " + c.slice( - 2 );
}
else
{
if ( chr == " " )
ret += " + " ;
else if (strSpecial.indexOf( chr ) ! = - 1 )
ret += " % " + c.toString( 16 );
else
ret += chr ;
}
}
return ret;
}
function urlDecode(str)
{
var ret = "" ;
for (var i = 0 ; i < str.length; i ++ )
{
var chr = str.charAt(i);
if ( chr == " + " )
{
ret += " " ;
}
else if ( chr == " % " )
{
var asc = str.substring(i + 1 , i + 3 );
if (parseInt( " 0x " + asc ) > 0x7f)
{
ret += asc2str(parseInt( " 0x " + asc + str.substring(i + 4 , i + 6 )));
i += 5 ;
}
else
{
ret += asc2str(parseInt( " 0x " + asc ));
i += 2 ;
}
}
else
{
ret += chr ;
}
}
return ret;
}
-->
</ script >
VBScript、VB.NET 中的 URLEncode、URLDecode
(本文的 URLEncode、URLDecode 是按 ANSI 编码的。千一网络编辑注)
VBScript 中的 URLEncode、URLDecode

Public Function URLEncode(strURL)
Dim I
Dim tempStr
For I = 1 To Len (strURL)
If Asc ( Mid (strURL, I, 1 )) < 0 Then
tempStr = " % " & Right ( CStr ( Hex ( Asc ( Mid (strURL, I, 1 )))), 2 )
tempStr = " % " & Left ( CStr ( Hex ( Asc ( Mid (strURL, I, 1 )))), Len ( CStr ( Hex ( Asc ( Mid (strURL, I, 1 ))))) - 2 ) & tempStr
URLEncode = URLEncode & tempStr
ElseIf ( Asc ( Mid (strURL, I, 1 )) >= 65 And Asc ( Mid (strURL, I, 1 )) <= 90 ) Or ( Asc ( Mid (strURL, I, 1 )) >= 97 And Asc ( Mid (strURL, I, 1 )) <= 122 ) Then
URLEncode = URLEncode & Mid (strURL, I, 1 )
Else
URLEncode = URLEncode & " % " & Hex ( Asc ( Mid (strURL, I, 1 )))
End If
Next
End Function
Public Function URLDecode(strURL)
Dim I
If InStr (strURL, " % " ) = 0 Then URLDecode = strURL: Exit Function
For I = 1 To Len (strURL)
If Mid (strURL, I, 1 ) = " % " Then
If eval ( " &H " & Mid (strURL, I + 1 , 2 )) > 127 Then
URLDecode = URLDecode & Chr ( eval ( " &H " & Mid (strURL, I + 1 , 2 ) & Mid (strURL, I + 4 , 2 )))
I = I + 5
Else
URLDecode = URLDecode & Chr ( eval ( " &H " & Mid (strURL, I + 1 , 2 )))
I = I + 2
End If
Else
URLDecode = URLDecode & Mid (strURL, I, 1 )
End If
Next
End Function

Text2.Text = URLEncode(Text1.Text)
End Sub
Public Function URLEncode() Function URLEncode(ByRef strURL As String ) As String
Dim I As Long
Dim tempStr As String
For I = 1 To Len (strURL)
If Asc ( Mid (strURL, I, 1 )) < 0 Then
tempStr = " % " & Right ( CStr ( Hex ( Asc ( Mid (strURL, I, 1 )))), 2 )
tempStr = " % " & Left ( CStr ( Hex ( Asc ( Mid (strURL, I, 1 )))), Len ( CStr ( Hex ( Asc ( Mid (strURL, I, 1 ))))) - 2 ) & tempStr
URLEncode = URLEncode & tempStr
ElseIf ( Asc ( Mid (strURL, I, 1 )) >= 65 And Asc ( Mid (strURL, I, 1 )) <= 90 ) Or ( Asc ( Mid (strURL, I, 1 )) >= 97 And Asc ( Mid (strURL, I, 1 )) <= 122 ) Then
URLEncode = URLEncode & Mid (strURL, I, 1 )
Else
URLEncode = URLEncode & " % " & Hex ( Asc ( Mid (strURL, I, 1 )))
End If
Next
End Function
Public Function URLDecode() Function URLDecode(ByRef strURL As String ) As String
Dim I As Long
If InStr (strURL, " % " ) = 0 Then URLDecode = strURL: Exit Function
For I = 1 To Len (strURL)
If Mid (strURL, I, 1 ) = " % " Then
If Val( " &H " & Mid (strURL, I + 1 , 2 )) > 127 Then
URLDecode = URLDecode & Chr (Val( " &H " & Mid (strURL, I + 1 , 2 ) & Mid (strURL, I + 4 , 2 )))
I = I + 5
Else
URLDecode = URLDecode & Chr (Val( " &H " & Mid (strURL, I + 1 , 2 )))
I = I + 2
End If
Else
URLDecode = URLDecode & Mid (strURL, I, 1 )
End If
Next
End Function
Private Sub Command2_Click() Sub Command2_Click()
Text3.Text = URLDecode(Text2.Text)
End Sub
Private Sub Form_Load() Sub Form_Load()
Text1.Text = " http://www.microsoft.com/中国微软 "
End Sub
纯 JavaScript 版的 ANSI 的 URL 编码与解码
JavaScript 版本中可以通过 encodeURI, encodeURIComponent 实现 UTF-8 的 URL 编码与解码,但要实现 ANSI 的就得自己写代码了。
之前有一个 JavaScript 与 VBScript 混合的 ANSI 的 URL 编码与解码,遗憾的是某些浏览器无法支持 VBScript,所以才有了本文纯 JavaScript 版的。
Unicode 与 ANSI 的编码转换
ANSI 编码与字符之间的转换

{
var n = UnicodeToAnsi(str.charCodeAt( 0 ));
var s = n.toString( 16 );
return s.toUpperCase();
}
function asc2str(code)
{
var n = AnsiToUnicode(code);
return String .fromCharCode(n);
}
URL 编码与解码

{
var ret = "" ;
var strSpecial = " !\ " #$% & ’() *+ , / :; <=> ?[] ^ `{|}~% " ;
var tt = "" ;
for (var i = 0 ; i < str.length; i ++ )
{
var chr = str.charAt(i);
var c = str2asc( chr );
tt += chr + " : " + c + " n " ;
if (parseInt( " 0x " + c) > 0x7f)
{
ret += " % " + c.slice( 0 , 2 ) + " % " + c.slice( - 2 );
}
else
{
if ( chr == " " )
ret += " + " ;
else if (strSpecial.indexOf( chr ) ! = - 1 )
ret += " % " + c.toString( 16 );
else
ret += chr ;
}
}
return ret;
}
function urlDecode(str)
{
var ret = "" ;
for (var i = 0 ; i < str.length; i ++ )
{
var chr = str.charAt(i);
if ( chr == " + " )
{
ret += " " ;
}
else if ( chr == " % " )
{
var asc = str.substring(i + 1 , i + 3 );
if (parseInt( " 0x " + asc ) > 0x7f)
{
ret += asc2str(parseInt( " 0x " + asc + str.substring(i + 4 , i + 6 )));
i += 5 ;
}
else
{
ret += asc2str(parseInt( " 0x " + asc ));
i += 2 ;
}
}
else
{
ret += chr ;
}
}
return ret;
}
http://www.cftea.com/c/2009/03/AIDM29BK6DTV9BI8.asp
url 编码 js url传参中文乱码解决方案(教程)
前后台用js传参过程中,如果是中文就容易出现乱码,所以最好是先编码。 1.配置文件web.config中 在节中加上整个网站(的)编码方式。
<globalization fileEncoding="GB2312" requestEncoding="GB2312" responseEncoding="GB2312"/>
这样参数就以gb2312(的)中文编码方式传输了。而一般默认是utf-8.
2.在传参是先编码在传输,接受时先编码,在接收。
string mm=Server.URLEncode(你们);
Response.Redirect(index.aspx?mm=+mm);
然后在接收页解码:
string mm = Server.URLDecode(Requext.querystring(mm));
javascript中存在几种对URL字符串进行编码(的)方法:escape(),encodeURI(),以及encodeURIComponent()。这几种编码所起(的)作用各不相同。
escape() 方法:
采用ISO Latin字符集对指定(的)字符串进行编码。所有(的)空格符、标点符号、特殊字符以及其他们非ASCII字符都将被转化成%xx格式(的)字符编码(xx等于该字符在字符集表里面(的)编码(的)16进制数字)。比如,空格符对应(的)编码是%20。
不会被此方法编码(的)字符: @ * / +
encodeURI() 方法:
把URI字符串采用UTF-8编码格式转化成escape格式(的)字符串。
不会被此方法编码(的)字符:! @ # $& * ( ) = : / ; ? + '
encodeURIComponent() 方法:
把 URI字符串采用UTF-8编码格式转化成escape格式(的)字符串。与encodeURI()相比,这个方法将对更多(的)字符进行编码,比如 / 等字符。所以如果字符串里面包含了URI(的)几个部分(的)话,不能用这个方法来进行编码,否则 / 字符被编码之后URL将显示错误。
不会被此方法编码(的)字符:! * ( ) '
因 此,对于中文字符串来说,如果不希望把字符串编码格式转化成UTF-8格式(的)(比如原页面和目标页面(的)charset是一致(的)时候),只需要 使用 escape。如果你们(的)页面是GB2312或者其他们(的)编码,而接受参数(的)页面是UTF-8编码(的),就要采用encodeURI或者 encodeURIComponent。
另外,encodeURI/encodeURIComponent是在javascript1.5之后引进(的),escape则在javascript1.0版本就有。
传参:用encodeURI("url参数")将url编码
收参:用decodeURI("接收到(的)值")解码
js实现url加密,解密

< ! -- 代码来自网络 -->
< title > js实现asp中的UrlEncode和UrlDecode -- 来自网络 </ title >
< form action = "" method = " post " name = " form " >
< input type = " text " size = " 50 " name = " code " maxlength = " 100 " />< br />
< input type = " submit " value = " 加密解密 " />
</ form >
< script language = " vbscript " >
Function str2asc(strstr)
str2asc = hex ( asc (strstr))
End Function
Function asc2str(ascasc)
asc2str = chr (ascasc)
End Function
</ script >
< script language = " javascript " >
/* 这里开始时UrlEncode和UrlDecode函数 */
function UrlEncode(str){
var ret = "" ;
var strSpecial = " !\ " #$% & ' ()*+,/:;<=>?[]^`{|}~%";
for (var i = 0 ;i < str.length;i ++ ){
var chr = str.charAt(i);
var c = str2asc( chr );
// tt += chr + " : " + c + " n " ;
if (parseInt( " 0x " + c) > 0x7f){
ret += " % " + c.slice( 0 , 2 ) + " % " + c.slice( - 2 );
} else {
if ( chr == " " )
ret += " + " ;
else if (strSpecial.indexOf( chr )! =- 1 )
ret += " % " + c.toString( 16 );
else
ret += chr ;
}
}
return ret;
}
function UrlDecode(str){
var ret = "" ;
for (var i = 0 ;i < str.length;i ++ ){
var chr = str.charAt(i);
if ( chr == " + " ){
ret += " " ;
} else if ( chr == " % " ){
var asc = str.substring(i + 1 ,i + 3 );
if (parseInt( " 0x " + asc ) > 0x7f){
ret += asc2str(parseInt( " 0x " + asc + str.substring(i + 4 ,i + 6 )));
i += 5 ;
} else {
ret += asc2str(parseInt( " 0x " + asc ));
i += 2 ;
}
} else {
ret += chr ;
}
}
return ret;
}
ss = ""
aa = UrlEncode(ss)
bb = UrlDecode(ss)
document.write( " 编码后 " + aa + " <br> " );
document.write( " 解码后: " + bb);
传地址的时候有#扰乱了url中adress值的传输。
最后还是选择了vbscript+js的方法,因为,上面纯js的不好用.. - = 好吧,大概是我没用明白....
http://www.cnblogs.com/neru/archive/2010/07/10/1774718.html