当前位置: 代码迷 >> Java Web开发 >> Ajax乱码,相当严重。该如何处理
  详细解决方案

Ajax乱码,相当严重。该如何处理

热度:109   发布时间:2016-04-17 10:55:44.0
Ajax乱码,相当严重。
经测试,是ajax提交到后台的数据时乱码的,是使用str.getBtyes(),这种方式转码也不行。
网上查的方法用遍了还是解决不了。
下面是Ajax的代码
JScript code
function InitAjax(){         var ajax=false;         try {          ajax = new ActiveXObject("Msxml2.XMLHTTP");         } catch (e) {          try {           ajax = new ActiveXObject("Microsoft.XMLHTTP");          } catch (E) {           ajax = false;          }         }         if (!ajax && typeof XMLHttpRequest!='undefined') {          ajax = new XMLHttpRequest();         }         return ajax;        }function sendMsg(){            if(connection){                document.getElementById("msgByLine").innerHTML += "<li>您还没有建立连接.</li>";                return;            }            var msg = document.getElementById("text").value;            if(msg == ""){                return;            }            document.getElementById("text").value = "";            var url = "servlet/Online?flag=2&id="+flag+"&content="+ msg +"&da="+new Date();            var ajax = InitAjax();            url = encodeURI(url);            url = encodeURI(url);            ajax.open("GET", url, true);            //ajax.setRequestHeader("Content-Type","text/html;charset=UTF-8");            //ajax.setRequestHeader("Content-Type", "application/x-www-form-urlencoded;");            //ajax.setRequestHeader("content-Type","text/html;charset=utf-8;");             ajax.onreadystatechange = function() {                if (ajax.readyState == 4 && ajax.status == 200) {                    var responseT = ajax.responseText;                    if(responseT == "over"){                        document.getElementById("msgByLine").innerHTML += "<li>您已经结束对话·</li>";                    }else{                        var d = new Date();                        var hours = add_zero(d.getHours())+":";                        var minutes = add_zero(d.getMinutes())+":";                        var seconds=add_zero(d.getSeconds());                        document.getElementById("msgByLine").innerHTML += "<li><b>我 "+ hours + minutes + seconds +":</b>&nbsp;&nbsp;"+msg+"</li>";                    }                    var div = document.getElementById("message");                    div.scrollTop = div.scrollHeight;                }            }            ajax.send(null);

下面是Servlet处理的方法
Java code
if(flag.equals("2")||flag.equals("1")){            int random = Integer.parseInt(request.getParameter("id"));            if(chat.get(random) == null){                //已经结束对话                out.print("over");                return;            }            //检查聊天记录是否超过100条,则删除前50条            if(chat.get(random).size() > 100)                for(int i = 0; i < 50; i++){                    chat.get(random).remove(i);                }            //处理中文乱码            String d = request.getParameter("content");            System.out.println(request.getQueryString());            d = new String(d.getBytes("ISO-8859-1"),"UTF-8");            //System.out.println(d);            //String content = new String(d.getBytes("ISO-8859-1"),"utf-8");            //System.out.println(d);            //String dd = new String(d.getBytes("ISO-8859-1"),"UTF-8");            //System.out.println("+++++"+dd);            System.out.println(d);            Online online = new Online();            online.setFlag(Integer.parseInt(flag));            online.setContent(d);            online.setDate(new SimpleDateFormat("HH:mm:ss").format(System.currentTimeMillis()));            chat.get(random).add(online);        }
  相关解决方案