我用的服务器是tomcat7,可能7对中文的支持不是很好。我想要把用户名(中文)存到cookie中,以后打开时再读取。response.setContentType("text/html");
PrintWriter out = response.getWriter();
request.setCharacterEncoding("UTF-8");
String uname = request.getParameter("username");
String upwd = request.getParameter("password");
String remember = request.getParameter("remember");
Userinfo u = new Userinfo();
u.setUsermail(uname);
u.setPassword(upwd);
UserinfoBiz ub = new UserinfoBizImpl();
if (ub.login(u)) {
if (remember != null) {
uname=new String(uname.getBytes("iso8859-1"));
Cookie ckuname = new Cookie("uname", uname);
Cookie ckupwd = new Cookie("upwd", upwd);

ckuname.setMaxAge(60 * 60 * 24 * 365);
ckupwd.setMaxAge(60 * 60 * 24 * 365); response.addCookie(ckuname);
response.addCookie(ckupwd);
}
request.getSession().setAttribute("username", uname);
request.getSession().setAttribute("password", upwd);
response.sendRedirect("myindex"); } else {

 response.sendRedirect("login.html");
}
out.close();因为中文没法写入,所以我在写入之前把编码转成了iso8859-1.现在我应该在读取的servlet中转成utf-8。。为什么我转不回来了代码如下。。if (cookie[i].getName().equals("uname")) {
unameString = cookie[i].getValue();
unameString=new String(unameString.getBytes("iso8859-1"),"utf-8");
}悲剧啊。求解决

解决方案 »

  1.   

    iso-8859-1 是西欧字符集,256个字符,和中文没有半毛钱关系。
    utf-8才是好的编码,为什么要把utf-8转成其他的
      

  2.   


    因为 tomcat7 对中文支持不好。没有办法将中文写入cookie.我就想换个方式去写。。然后用的时候再转回来。。
      

  3.   

    if (cookie[i].getName().equals("uname")) {
                        unameString = cookie[i].getValue();
                        unameString=new String(unameString.getBytes("iso8859-1"),"utf-8");
                    }这样不就是放在数组里么?
      

  4.   


    我用的是java的servlet 不是 js。