为了账号安全,请及时绑定邮箱和手机立即绑定

servlet获取get请求的参数时,中文乱码

servlet获取get请求的参数时,中文乱码

弑天下 2018-12-07 04:39:03
url是UTF-8的,servlet是GBK编码的,可是我在Servlet中设置了request.setCharacterEncoding("UTF-8"); 可是request.getParamete("username")获取用户名还是乱码,不知道为什么?我尝试设置request.setCharacterEncoding("GBK");时也是乱码,实在不知道哪里出问题了
查看完整描述

8 回答

?
墨色风雨

TA贡献1853条经验 获得超6个赞

以什么方式提交的?get,post? setCharacterEncoding只对post内容有效,get的话看看浏览器的编码是什么。servlet是gbk的,源码的编码格式不影响运行吧,都是英文。

查看完整回答
反对 回复 2018-12-16
?
万千封印

TA贡献1891条经验 获得超3个赞

用户名密码是url还是body中,在body需要html Encode (decode),在url需要url encode(decode)。然后才是对应的编码!

查看完整回答
反对 回复 2018-12-16
?
当年话下

TA贡献1890条经验 获得超9个赞

是ur,不过url中文显示正常,不是什么%之类的,这样也要encode和decode吗 

查看完整回答
反对 回复 2018-12-16
?
慕无忌1623718

TA贡献1744条经验 获得超4个赞

 // 解决中文乱码问题

String encode = "UTF-8";
if (request.getHeader("User-Agent").toUpperCase().indexOf("MSIE") > 0
   || request.getHeader("User-Agent").toUpperCase().indexOf("TRIDENT") > 0 ) {// IE浏览器
 encode = "GBK";
 }
String param1 = new String(request.getParameter("param1").getBytes("ISO-8859-1"), encode);
String param2 = new String(request.getParameter("param2 ").getBytes("ISO-8859-1"), encode);

以上是针对兼容不同浏览器的乱码(目前只测试过:IE、360、google、mozillaFireFox);

如果您用的是tomcat,请在tomcat的server.xml配置文件中的connector元素标签添加URIEncoding = "UTF-8"

或者设置 request.setCharacterEncoding("UTF-8"),再修改tomcat的connector元素也行

查看完整回答
反对 回复 2018-12-16
?
森栏

TA贡献1810条经验 获得超5个赞

我被这段代码坑了100遍了。不能解决所有问题。只能说一部分可以。

查看完整回答
反对 回复 2018-12-16
?
红颜莎娜

TA贡献1842条经验 获得超13个赞

@wangjinming: 能把代码截个图出来看看吗

查看完整回答
反对 回复 2018-12-16
  • 8 回答
  • 0 关注
  • 934 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号