Jsp,servlet中cookie存储中文问题

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;//写会页面



评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值