cookie能存储英文数据是没有问题的,但是如果存储中文呢?尝试一下直接存储果然不行,会在页面上显示乱码.在chrome好像不显示出来.其他浏览器显示乱码.原因是存成cookie会将中文数据进行ASCII编码,中文是使用4位编码的,而ASCII编码是两位,会出现乱码问题.知道原因就好说了.
先是一定要将数据编码,只不过不能再用系统默认的了.那首选肯定是utf-8,不解释.JAVA中两个个专门编码和解码的类.URLEncoder(编码)和URLDecode(解码).方法分别是encode(String s,String enc),decode(String s,String enc).这两个方法的作用和参数一目了然.但是问题又来了.就算你在servlet中编码后存入cookie,但是在jsp页面上怎么取呢.别跟我说使用<%JAVA代码%>这样来取,这样就没意思了.
还好有js帮忙,js中有一个方法是解码用的.这样就不用在jsp中写java代码了decodeURIComponent(var str).使用的也是
utf-8解码.这样不是一拍即合了.代码实现如下:
servlet中的代码
String userName = URLEncoder.encode(reUser.getUsername(),"utf-8");//封装在bean中的数据,你就将reUser.getUsername();想象成一个中文字符串就行.
Cookie userCookie = new Cookie("usercookie",userName);//存入cookie中
userCookie.setMaxAge(60*60);//设置cookie到期时间
response.addCookie(userCookie);//写回给浏览器
jsp中的代码,js的代码
var username = "${cookie.usercookie.value}";//取到cookie中的值
//解码
username = decodeURIComponent(username);
document.getElementById("username").value=username;//写会页面