JS中URL編碼參數(UrlEncode)
參數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。
<script type="text/vbscript">
<!--
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
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

