解决 response.setCharacterEncoding("utf-8"),不生效的问题

前提:正在复习ServletContext,获取到servletContext对象设置的Attribute以后,把它输出到网页上,发现是乱码。

/**
 * @author Claw
 */
public class OtherServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        ServletContext context = this.getServletContext();
        String name = (String) context.getAttribute("name");
        PrintWriter respWriter = resp.getWriter();
        resp.setContentType("text/html; charset=utf-8");
        respWriter.println(name+"--------------正在开发");
  	  }
    }

可以看到编码仍然是ISO-8859-1,说明设置未生效。
在这里插入图片描述
根据这篇博客,解决了我的问题
解决为什么已经设置了request.setCharacterEncoding(“utf-8”);POST请求仍然乱码的问题

进行请求编码设置,这是最简单的,需要注意的问题就是不要在获取请求参数之后设置请求编码

若已获取请求参数,此时还没有设置过编码,Tomcat会设置默认Post请求参数编码为ISO8859_1,那么你再设置成UTF-8也无效了,还是ISO-8859-1

是说一开始就要设置好编码,所以我更改了代码顺序,把编码提到最前。

public class OtherServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        ServletContext context = this.getServletContext();
        resp.setContentType("text/html; charset=utf-8");
        String name = (String) context.getAttribute("name");
        PrintWriter respWriter = resp.getWriter();
        respWriter.println(name + "--------------正在开发");

    }
}

这下正常了
在这里插入图片描述
搜过其他答案
说可以这样设置能解决未生效的问题,对于我而言无法解决,还是顺序的问题。

    resp.setContentType("text/html; charset=utf-8");

setCharacterEncoding("utf-8")可以也能生效,这两个一样的。

        resp.setCharacterEncoding("utf-8");
        resp.setContentType("text/html")
  • 6
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值