http://www.albionresearch.com/misc/urlencode.htm <script language="javascript"> 
function URLEncode(plaintext) 

// The Javascript escape and unescape functions do not correspond 
// with what browsers actually do... 
var SAFECHARS = "0123456789" + // Numeric 
"ABCDEFGHIJKLMNOPQRSTUVWXYZ" + // Alphabetci 
"abcdefghijklmnopqrstuvwxyz" + 
"-_.!~*'()"; // RFC2396 Mark characters 
var HEX = "0123456789ABCDEF"; var encoded = ""; 
for (var i = 0; i < plaintext.length; i++ ) { 
var ch = plaintext.charAt(i); 
    if (ch == " ") { 
    encoded += "+"; // x-www-urlencoded, rather than %20 
} else if (SAFECHARS.indexOf(ch) != -1) { 
    encoded += ch; 
} else { 
    var charCode = ch.charCodeAt(0); 
if (charCode > 255) { 
    alert( "Unicode Character '" + ch + "' cannot be encoded using standard URL encoding.\n" + 
        "(URL encoding only supports 8-bit characters.)\n" + 
"A space (+) will be substituted." ); 
encoded += "+"; 
} else { 
encoded += "%"; 
encoded += HEX.charAt((charCode >> 4) & 0xF); 
encoded += HEX.charAt(charCode & 0xF); 


} // for return encoded; 
} function URLDecode(encoded) 

   // Replace + with ' ' 
   // Replace %xx with equivalent character 
   var plaintext = ""; 
   var i = 0; 
   while (i < (encoded.length-2)) { 
       var ch = encoded.charAt(i); 
   if (ch == "+") { 
       plaintext += " "; 
   i++; 
   } else if (ch == "%" && encoded.charAt(i+1) != "%") { 
       plaintext += unescape( encoded.substr(i,3) ); 
   i += 3; 
} else { 
   plaintext += ch; 
   i++; 

} // while 
if (i < encoded.length) { 
    plaintext += encoded.substr(i,encoded.length-i); 

   return unescape(plaintext); 
} </script>