// added support for cyrrilic unicode symbols, which are converted into Windows-1251 charset function URLEncode(s) { // The Javascript escape and unescape functions do not correspond // with what browsers actually do... var SAFECHARS = "0123456789" + // Numeric "ABCDEFGHIJKLMNOPQRSTUVWXYZ" + // Alphabetic "abcdefghijklmnopqrstuvwxyz" + "-_.!~*'()"; // RFC2396 Mark characters var HEX = "0123456789ABCDEF"; // plaintext = document.URLForm.F1.value; var plaintext = s; 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) { if ((charCode >= 1040) && (charCode <= 1103)) { charCode -= 848; } else if (charCode == 1110) { charCode = 179; } else if (charCode == 1108) { charCode = 186; } else if (charCode == 1111) { charCode = 191; } else if (charCode == 1030) { charCode = 178; } else if (charCode == 1028) { charCode = 170; } else if (charCode == 1031) { charCode = 175; } else if (charCode == 8217) { charCode = 146; } else if (charCode == 8211) { charCode = 150; } else if (charCode == 8220) { charCode = 147; } else if (charCode == 8221) { charCode = 148; } else { //alert( "Unicode Character '" + ch + "' - (" + charCode + "), " + "cannot be encoded using standard URL encoding.\n" + // "(URL encoding only supports 8-bit characters.)\n" + // "A space (+) will be substituted." ); encoded += "+"; charCode =-1; } } if (charCode != -1) { encoded += "%"; encoded += HEX.charAt((charCode >> 4) & 0xF); encoded += HEX.charAt(charCode & 0xF); } } } // for //document.URLForm.F2.value = encoded; //return false; return encoded; };