解决Tomcat response字符输出流或字节输出流响应到客户端出现乱码的情况

在这里用字符输出流为例,字节输出流同理

在doPost方法中获取字符输出流并向客户端传输一段中文

@Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        response.getWriter().write("你好,hello。");
    }

访问该路径,得到的响应为在这里插入图片描述

出现乱码也就是编码出现了问题,response中得到的输出流对象默认编码为ISO-8859-1,而我们一般电脑默认编码为GBK或GB2312,所以我们只需要获取流对象之前将默认字符编码改为gbk即可

@Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        response.setCharacterEncoding("GBK");
        response.getWriter().write("你好,hello。");
    }

得到的响应结果为
在这里插入图片描述

但是有的电脑不一定是GBK,所以我们要告诉浏览器建议使用什么编码,所以要通过消息头的方式告诉浏览器建议编码。
响应头中有一个content-type,其介绍如下

  • Content-Type
    表示后面的文档属于什么MIME类型。Servlet默认为text/plain,但通常需要显式地指定为text/html。由于经常要设置Content-Type,因此HttpServletResponse提供了一个专用的方法setContentType。

所以我们就可以设置content-type为"text/html;charset=utf-8"
其中test/html为MIME类型

response.setContestType()方法可以直接设置默认编码并且直接告诉浏览器用什么编码

@Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        response.setContentType("text/html;charset=gbk");
        response.getWriter().write("你好啊,hello。");
    }

响应结果
在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值