url传值中文乱码的解决方案

来源:互联网 发布:庇古的福利经济学知乎 编辑:程序博客网 时间:2024/06/05 19:19

使用javamail发送邮件时,当用户注册链接后跳转时传递url+?+参数名+值,但是如果传递的部分有中文就会出现中文乱码问题.

经过检查发送邮件前后两个servlet编码格式均为utf-8应该不存在编码格式问题,查看邮件中的url地址发现中文也是正确的(这里就不要吐槽为什么为啥传的是中文了2333学习用的就没有加密),so问题出现在用户点击链接跳转到servlet的过程中,经过查询资料得知

容器会默认帮你解一次码,容器默认解码时采用的编码是容器的默认编码,可能是UTF-8,GBK,也可能是其他编码方式。这与你的应用的编码方式未必会一致。所以你直接获取的话可能会出现乱码。(及时你在前后页面设置过页面编码格式,那个仅仅是页面的,传递到这个页面之前已经被容器解成乱码了,解决方案如下:

String username=request.getParameter("username");username=new String(username.getBytes("iso8859-1"),"UTF-8");

第一句就是正常获取username,第二句就是关键.

这样username里面就是正确的结果

0 0