java setattribute乱码_记一次javaweb中乱码问题的解决

在编写登陆案例的时候,出现乱码问题,总结现在学习到的关于javaweb中编码处理的知识。

1. jsp页面编码

* pageEncoding : JSP页面的字符编码,默认值:iso-8859-1。

* contentType : 源文件本身和响应正文的字符编码。

* pageEncoding存在的话,以它为主,不存在寻找contentType,两者都不存在,采用默认值。

注意:在我们使用

表单提交数据的时候,表单中的数据也采用了utf-8编码

2.servlet获取jsp编码问题

对于post请求:

*request.setCharacterEncoding("utf-8"); : 服务器端servlet采用utf-8编码接受数据(如果form采用post请求,但是servlet不调用该方法,会导致表单数据是utf-8编码,但是servlet会使用iso-8859-1对其进行编码,导致乱码现象)

对于get请求:

* 调用request.setCharacterEncoding()无效。需要手动转换:

> String newStr = new String(request.getParameter("userName").getBytes("iso-8859-1"), "utf-8");

3.登陆案例乱码问题原因:

JSP页面采用UTF-8编码,但是doPost()获取参数时并没有采用utf-8,而是采用iso-8859-1编码,导致乱码。

两种解决方法:

* Servlet -> doPost() -> request.setCharacterEncoding("utf-8");

* UserDao.java -> void add(User user) -> String userName = new String(user.getUserName().getBytes("iso-8859-1"), "utf-8");

> ele.addAttribute("userName", userName);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值