Servlet向浏览器输出中文的乱码问题

本文介绍了在Tomcat服务器中处理中文乱码的问题。详细解释了Tomcat默认使用ISO编码与浏览器默认使用GBK编码之间的冲突,并提供了两种解决方案:通过设置HTTP响应头或使用PrintWriter输出字符流来指定UTF-8编码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

先说一个重点:tomcat默认使用iso编码,而浏览器默认使用GBK编码,所以在处理中文方面会出现问题。
servlet向浏览器写数据的两种方式
1.二级制形式:

(1)将中文用gbk编码,然后用输出流输出到浏览器中

public class ServletDemo1 extends javax.servlet.http.HttpServlet {

    protected void service(HttpServletRequest request,HttpServletResponse response) throws IOException{
        ServletOutputStream servletOutputStream=response.getOutputStream();   //获取outputStream二进制输出流
        //向浏览器输出数据
        servletOutputStream.write("中文".getBytes("gbk"));
    }
}

(2)为了同一格式得用utf-8编码(注意:不能将上面代码的gbk改为utf-8,因为浏览器是gbk编码),可以在HTTP响应的消息头里面设置编码格式,而HttpServletResponse对象就有相应的方法:

response.setHeader("Content-Type","text/html;charset=UTF-8");
response.getOutputStream().write("中文".getBytes("UTF-8"));

(3)上面是设置消息头,也可以使用html标签模拟一个http消息头

 servletOutputStream.write("<meta http-equiv='content-type' content='text/html;charset='utf-8'>".getBytes("gbk"));
 servletOutputStream.write("中文".getBytes("UTF-8"));
2.字符形式

(1)tomcat默认使用iso编码,而中文不支持这个码表,所以设置编码格式未utf-8,同时设置浏览器显示格式为utf-8

response.setContentType("text/html;charset=utf-8");   //这个方法做了两件事:设置浏览器用utf-8显示数据,内部把中文转码的码表设置成utf-8
PrintWriter printWriter=response.getWriter();
printWriter.write("中文");

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值