首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > Java Web开发 >

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

2012-03-24 
Ajax乱码,相当严重。经测试,是ajax提交到后台的数据时乱码的,是使用str.getBtyes(),这种方式转码也不行。网

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);        } 



全站的编码都是utf-8,我在filter中也设置编码为utf-8
但是,但是,ajax提交中午到servlet后,显示为??????

有大神知道为什么吗?


[解决办法]
html编码也是utf-8否?
js文件的编辑器字符集设置是urf-8否?
引入Js的地方指定字符集否?如:
<SCRIPT language="Javascript" type="text/javascript" charset="utf-8" src="xxx.js"></SCRIPT>
[解决办法]
看看我博客里面的文章,希望对你有帮助!

http://pengyan5945.iteye.com/blog/1103310
[解决办法]
d = java.net.URLDecoder.decode(d, "UTF-8");

热点排行