go to "project->project properties->general->encoding",change it to "utf8",regenerate the jsp file,then you can save it.if you must use the gbk,you can manually modify the declaration of the jsp file to gbk,it still work.

解决方案 »

  1.   

    Thanks for noblame(不嗔). but I have fixed this problem by myself.
    I downloaded a patch from internet,then replaced the related file in the jbulider.jar. I think this is the thorough way to solve this bug.
      

  2.   

    //<SCRIPT LANGUAGE="JSCRIPT">
    (function()
    {
        WebServices = 
        {
         useService : useService     
        }
        var _nextId  = 0;
        var _nextNsQ = 0;
        var _sdl = new Array();
        var _mProg = null;
        var _fVBon = false;
        var _aXmlHttp = new Array();
        var xsi99 = "http://www.w3.org/1999/XMLSchema-instance";
        var xsi01 = "http://www.w3.org/2001/XMLSchema-instance";
        var xsd01 = "http://www.w3.org/2001/XMLSchema";
        var xsd99 = "http://www.w3.org/1999/XMLSchema";
        var _st = {
        "negativeInteger" : 0,
        "unsignedShort"   : 0,
        "unsignedByte"    : 0,
        "unsignedLong"    : 0,
        "unsignedInt"     : 0,
        "decimal"         : 0,
        "boolean"         : 0,
        "integer"         : 0,
        "double"          : 0,
        "float"           : 0,
        "short"           : 0,
        "byte"            : 0,
        "long"            : 0,
        "int"             : 0,
        "QName"           : 1,
        "string"          : 1,
        "normalizedString": 2,
        "timeInstant"     : 3,
        "dateTime"        : 3,
        "date"            : 4,
        "time"            : 5,
        "base64Binary"    : 6,
        "base64"          : 7};    function ErrDetail(errCode, errString, errRaw)
        {
            this.code = errCode;
            this.string = errString;
            this.raw = errRaw;
        }    var L_InProgress_Text = "In Progress";
        var L_InvalArg_Text = "Invalid argument";
        var L_NotReady_Text = "Service unavailable";
        var L_InvalRes_Text = "Invalid response";
        var L_UnsupFun_Text = "Function not found";
        var L_UnknownS_Text = "Unknown server error";
        var L_AcDenied_Text = "Access denied";
        var L_SoapUnav_Text = "Soap not available";
        var L_HtcInter_Text = "HTC internal error";
        var L_InvaPort_Text = "Invalid active port";
        var L_InvaHead_Text = "Invalid headers";
        var _errInvalArg = new ErrDetail("Client", L_InvalArg_Text, null);
        var _errNotReady = new ErrDetail("Client", L_NotReady_Text, null);
        var _errInvalRes = new ErrDetail("Server", L_InvalRes_Text, null);
        var _errUnsupFun = new ErrDetail("Client", L_UnsupFun_Text, null);
        var _errUnknownS = new ErrDetail("Server", L_UnknownS_Text, null);
        var _errAcDenied = new ErrDetail("Server", L_AcDenied_Text, null);
        var _errSoapUnav = new ErrDetail("Client", L_SoapUnav_Text, null);
        var _errHtcInter = new ErrDetail("Client", L_HtcInter_Text, null);
        var _errInvaPort = new ErrDetail("Client", L_InvaPort_Text, null);
        var _errInvaHead = new ErrDetail("Client", L_InvaHead_Text, null);
        var _aryError = new Array(
        _errInvalArg,
        _errNotReady,
        _errInvalRes,
        _errUnsupFun,
        _errUnknownS,
        _errAcDenied,
        _errSoapUnav,
        _errHtcInter,
        _errInvaPort,
        _errInvaHead
        );    function postError(oCall, refError)
        {
            if (oCall.co != null && !oCall.co.async)
            return returnError(oCall, refError);
            var s = function(){returnError(oCall, refError);};
            setTimeout(s, 0);
            return oCall.id;
        }    function returnError(oCall, refError)
        {
            hideProgress();
            var r = new Object();
            r.id = oCall.id;
            r.error = true;
            r.errorDetail = _aryError[refError];
            if (oCall.co != null && oCall.co.async == false)
            {
            return r;
            }
            var cb = oCall.cb;
            if (cb == null)
            {
            var evt = createEventObject();
            evt.result = r;
            try { eventResult.fire(evt); } catch(e) {};
            }
            else
            {
            try { cb(r); } catch(e) {};
            }
            return oCall.id;
        }
        
        function createCallOptions(fn, pn, cm, to, un, pw, hd, ep, pr)
        {
            var o = new Object();
            o.funcName = fn;
            o.portName = pn;
            o.async    = cm;
            o.timeout  = to;
            o.userName = un;
            o.password = pw;
            o.SOAPHeader= hd;
            o.endpoint = ep;
            o.params   = pr;
            return o;
        }    function createUseOptions(rc, sh)
        {
            var o = new Object();
            o.reuseConnection = rc == true;
            o.SOAPHeader = sh;
            return o;
        }    function cloneObject(co)
        {
            var o = new Object();
            for (var x in co)
                o[x] = co[x];
            return o;
        }    function ensureVBArray(d)
        {
            if (!_fVBon)
            {
                var s1 =
                "\nFunction VBGetArySize(a, d)\n"
                + "Dim x\n"
                + "Dim s\n"
                + "s=UBound(a, 1)\n"
                + "For x = 2 To d \n"
                + 's = s & "," & UBound(a, x)\n'
                + "Next\n"
                + "VBGetArySize=s\n"
                + "End Function\n";
                var o = element.document.createElement("script");
                o.language = "VBS";
                o.text = s1;
                element.document.body.appendChild(o);
                _fVBon = true;
            }
            var fn = "VBGetAryItem" + d;
            
            if (eval("typeof " + fn) != 'undefined')
                return;
            var a  = new Array();
            
            for (var i = 0; i < d; i++)
                a[i] = 'p' + i;
            var sp = a.join(", ");
            var s2 = "\nFunction " + fn + "(a, " + sp + ")\n"
            + "x = VarType(a(" + sp + "))\n"
            + "If x=9 Or x=12 Then\n"
            + "Set " + fn + "=a(" + sp + ")\n"
            + "Else\n"
            + fn + "=a(" + sp + ")\n"
            + "End If\n"
            + "End Function\n";
            var o = element.document.createElement("script");
            o.language = "VBS";
            o.text = s2;
            element.document.body.appendChild(o);
        }
        var _b64="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";    function encb64hlp(a, k, s, iFrom, iTo, fStr)
        {
            var d = 0;
            for (var i = 0; i + iFrom <= iTo; i ++)
            d |= (fStr ? s.charCodeAt(i + iFrom) : s[i + iFrom]) << (16 - 8*i);
            for (var i = 0; i <= iTo - iFrom + 1; i ++)
            a[k++] = _b64.charAt(d>>>(18 - i*6)&0x3f);
            return k;
        }
      

  3.   

    function decb64hlp(a, ai, ca, iFrom, iTo)
        {
            var d = 0;
            var l = iTo - iFrom;
            for (var i = 0; i + iFrom <= iTo; i ++)
            d |= ca[i + iFrom] << (18 - 6*i);
            for (var i = 0; i < l; i ++)
            a[ai + i] = (d >>> (16 - i*8)) & 0xff;
            return ai + i;
        }    function encb64(s)
        {
            var fStr = typeof(s) == "string";
            var i;
            var l = s.length;
            var a = new Array();
            var k = 0;
            for (i = 2; i < l; i = i + 3)
            {
            k = encb64hlp(a, k, s, i - 2, i, fStr);
            if ((i+1) % 57 == 0)
            a[k++] = "\r\n";
            }
            var padd = l - i + 2;
            if (padd > 0)
            {
            k = encb64hlp(a, k, s, i - 2, l-1, fStr);
            a[k] = (padd > 1) ? "=" : "==";
            }
            return a.join("");
        }
        var _b64rsc = "\n\r\t";    function decb64(s, fStr)
        {
            var i, j = 0;
            var ip = s.indexOf('=');
            var l = ip >= 0 ? ip : s.length;
            var ca = new Array();
            for (i = 0; i < l; i++)
            {
            var c = s.charAt(i);
            if (_b64rsc.indexOf(c) >= 0)
            continue;
            ca[j++] = _b64.indexOf(c);
            }
            var l = j;
            var a = new Array();
            var ai = 0;
            for (i = 3; i < l; i = i + 4)
            ai = decb64hlp(a, ai, ca, i-3, i);
            if (i-4 < l)
            ai = decb64hlp(a, ai, ca, i-3, l-1);
            if (!fStr)
            return a;
            var r = '';
            try
            {
            r = String.fromCharCode.apply(element, a);
            }
            catch (E)
            {
            for (i = 0; i < a.length; i++)
            r += String.fromCharCode(a[i]);
            }
            return r;
        }
        
        //·&micro;&raquo;&Oslash;&Ograve;&raquo;&cedil;&ouml;&sup1;&aelig;&cedil;&ntilde;&raquo;&macr;&micro;&Auml;Wsdl Url    
        function ensureWsdlUrl(szService)
        {
            if (szService.indexOf("://") > 0)
            return szService;
            var baseUrl = element.document.URL;
            var qi = baseUrl.lastIndexOf("?");
            var url2 = qi > 0 ? baseUrl.substr(0, qi) : baseUrl;
            return  url2.substr(0, baseUrl.lastIndexOf("/"))
            + "/" + szService + (szService.indexOf(".")>=0 ? "" : ".asmx?wsdl");
        }    function allocCall()
        {
            var o = new Object();
            o.fDone = false;
            o.next = null;
            o.id = _nextId;
            _nextId++;
            return o;
        }    function fnShowProgress()
        {
            if (_mProg == null)
            {
            var s = "<MARQUEE WIDTH=160 HEIGHT=20 BEHAVIOR=alternate SCROLLDELAY=1"
            + " STYLE='background:lightblue;position:absolute;top:0;left:0'>"
            + "</MARQUEE>";
            _mProg = element.document.createElement(s);
            _mProg.innerHTML = L_InProgress_Text;
            }
            if (_mProg.parentElement == null)
            element.document.body.insertAdjacentElement("beforeEnd",_mProg);
        }    function isSimpleType(os, oschm, t)
        {
            return oschm == null || oschm.sTypes[t.type]!=null;
        }    function isPrimitive(os, t)
        {
            return os.ns[t.ns] == os.ns["xsd"];
        }    function getWsdl()
        {
            var szService = null;
            for (var aService in _sdl)
            {
                if (_sdl[aService] == null)
                continue;
                var xmlisld = _sdl[aService]._oXml;//&raquo;&ntilde;&Egrave;&iexcl;&cedil;&Atilde;WebService&micro;&Auml;XML&para;&Ocirc;&Iuml;ó
                if (xmlisld == null)
                continue;
                //if (   _sdl[aService].fPending
                //&&  xmlisld.XMLDocument.readyState == 4)
                //{
                    _sdl[aService].fPending = false;
                    szService = aService;
                break;
                //}
            }
            if (szService == null)
            return;
            var oS = _sdl[szService];//OS&para;&Ocirc;&Iuml;ó·&acirc;×°&Aacute;&Euml;&Oacute;&ETH;&sup1;&Oslash;&Otilde;&acirc;&cedil;&ouml;WebService&micro;&Auml;&Ograve;&raquo;&ETH;&copy;&raquo;ù±&frac34;&ETH;&Aring;&Iuml;&cent;
            var fImportDone = loadImports(oS);
            if (fImportDone)
            processService(oS);
        }    function processService(oS)
        {
            var xmlSdl = oS._oXml.documentElement;
            try
            {
            parseWsdl(oS, xmlSdl);
            }
            catch(e)
            {
            xmlSdl = null;
            }
            /*
            var evt = createEventObject();
            evt.serviceUrl = oS.url;
            evt.userName = oS._oXml.service;
            evt.serviceAvailable = xmlSdl != null;
            evt.WSDL = xmlSdl;
            */
            oS._oXml.removeNode(true);
            oS._oXml = null;
            if (xmlSdl == null)
            {
                for (var nc = oS.nextCall; nc != null; nc = nc.next)
                    returnError(nc, 1);
                _sdl[oS.url] = null;
                eventService.fire(evt);
                return;
            }
            
            //eventService.fire(evt);
            
            if (oS.fSeq)
    return callNext(oS);
            while (oS.nextCall != null)
            {
            var nc = oS.nextCall;
            oS.nextCall = oS.nextCall.next;
            _invoke(nc);
            }
        }