java servlet网页乱码_Servlet中文乱码问题

一 问题描述:

当我们从前台发送一个请求到后台的时候,在后台servlet里面接收参数的时候,经常会出现乱码问题,这样就会导致我们拿到的数据不正确,后面的操作就无法进行;这是比较严重的一个问题,比如下面的情况:

前台页面login.html:

69d77c5bd4ccdc353f452371d3f00ab4.png

里面有一个form表单,提交方式为post,通过点击提交按钮,提交到后台TeacherServlet.java里面进行处理,如下后台代码:

后台TeacherServlet.java:

3652e2bd95b1d8662a7fe9f4322b7ec8.png

后台在接收到参数之后,打印参数的时候 ,就出现了乱码问题;

二 产生乱码原因

为什么出现这个乱码问题?

当我们浏览器传输过来的编码格式和后台程序编码格式不一致导致乱码问题产生;

三 解决方案

总共有3种解决方案,分别如下;

①当form表单提交方式是post的时候,后台可以通过 req.setCharacterEncoding(“UTF-8”)的方式解决乱码问题:

如下代码:

862c8780e683b7f2749eb81106943b98.png

②当form表单提交的方式是get方式的时候,修改tomcat里面server.xml里面的配置信息

,添加URIEncoding=”UTF-8”到配置文件里面;

如下server.xml:

59754616f1c83d9fc9b3c786f00a0d03.png

前面页面提交方式为get方式:

7489b470a9d3005a4aec952b55c0a91e.png

后台servlet里面不需要设置req.setCharacterEncoding(“UTF-8”):

4f71bbd17d24c5bb108654e21dc61e0b.png

如果需要兼容get/post请求怎么办?

可以再servlet.xml配置(解决get请求) ,又可以再后台同时设置req.setCharacterEncoding(“UTF-8”)(解决post请求):

③除了上面两种情况解决方案以外,还可以把接收到参数进行ISO-8859-1的方式拿到byte数组,在把byte数组转换成程序识别的UTF-8的方式;解决乱码问题;

如下操作:

//接收前台传过来的值

String username = req.getParameter("username");

//通过ISO-8859-1方式这种编码格式拿到byte数组

byte[] nameStr = username.getBytes("ISO-8859-1");

//在把byte数组通过UTF-8的编码转换成字符串

String name = new String(nameStr,"UTF-8");

System.out.println(name);

完整代码如下:

850528b690522be0d66e02ce269d71a1.png

四 总结

解决中文乱码问题方式:

①如果post请求,后台servlet里面设置req.setCharacterEncoding(“UTF-8”);

②如果get请求,在server.xml里面配置URIEncoding=”UTF-8”;

③接收参数之后,可以通过ISO-8859-1方式得到byte数组,在把byte数组通过UTF-8方式进行编码操作,得到需要的中文;

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值