下面的代码是跨浏览器,对地址栏中参数加密的js代码,运行到加密urlEncode中: if (parseInt("0x" + c) > 0x7f)
就出错了,或者从这里:else
  ret += chr;就跳出了,
不知啥原因,请高手帮忙看看那里的问题?
前面的函数:UnicodeToAnsi,AnsiToUnicode另有定义在另一段代码中。< script language = "javascript"type = "text/javascript" >function str2asc(str) {
    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);
}
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;
    //alert(urlEncode(hellow));
}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>