请教高手,以下程序不知道为什么出乱码?
tomcat容器中的编码也是UTF-8,如果单独写servlet并不是乱码,应该是通过javascript传输到服务器时出错。
login.jsp头文件已经设置了
pageEncoding="UTF-8" contentType="text/html;charset=UTF-8"
登录按钮:
<input type="button" value="登录" onclick="userCheck()" >
function userCheck() {
var uname = document.myform.uname.value;
var psw = document.myform.psw.value;
sendRequest('login?uname='+ uname + '&psw=' + psw);
。。省略}
跳转到servlet中:
request.setCharacterEncoding("UTF-8");
String uname = request.getParameter("uname");
String psw = request.getParameter("psw");
System.out.println(uname);
这里的uname打印出乱码。请教大侠,应该如何解决?

解决方案 »

  1.   

    这样试试 String uname=new String(request.getParameter("uname").getBytes(),"GBK");
      

  2.   

    小可刚才测试:
    var uname = document.myform.uname.value;
    document.write(uname);
    这里输出的中文字符是正常的,应该就是使用javascript客户端向服务器端servlet发送数据的时候,编码错误。这里已经排除tomcat编码错误的问题(因为单独用jsp-servlet发送时,中文不是乱码。)
    请教大侠,应该如何解决?
      

  3.   

    String uname=new String(request.getParameter("uname").getBytes(),"GBK");
    String uname=new String(request.getParameter("uname").getBytes(),"UTF-8");
    我都试过了,还是乱码。
      

  4.   

    sendRequest('login?uname='+ uname + '&psw=' + psw);改为
    sendRequest('login?uname='+ encodeURI(encodeURI(uname))+ '&psw=' + psw);
    再加上
    String name=URLDecoder.decode(request.getParameter("uname"), "UTF-8");