Servlet请求和响应中文乱码解决方式

请求

get请求

Tomcat 8.0 开始,默认的URIEncodingISO-8859-1变为UTF-8,如下图所示:
在这里插入图片描述

URIEncoding只影响get方式请求时URI的编码,不影响请求体和响应体的编码。默认请求体和响应体的编码还为iso-8859-1

假如从客户端以get方式传来一个username参数。

Tomcat Version < 8.0 的处理方式:

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

Tomcat Version >= 8.0 的处理方式:

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

post请求

post方式请求体的默认编码为iso-8859-1

request.setCharacterEncoding("utf-8");//设置请求体的编码为utf-8
String username=request.getParameter("username");

响应

字节流

String类的getBytes方法,默认编码方式为utf-8

response.setHeader("Content-Type","text/html;charset=utf-8");//设置一个响应头,让客户端以utf-8编码方式读取
response.getOutputStream().write("琴瑟琵琶".getBytes("utf-8"));//这里的uft-8也可以不填

#上面两句等同于
response.setContentType("text/html;charset=utf-8");
response.getOutputStream().write("琴瑟琵琶".getBytes());

字符流

以字符流的形式响应时,默认响应体的编码方式为iso-8859-1

response.setCharacterEncoding("utf-8");//设置响应体的编码
response.setHeader("Content-Type","text/html;charset=utf-8");//设置一个响应头,让客户端以utf-8编码方式读取
response.getWriter().write("魑魅魍魉");

# 上面三句等同于
response.setContentType("text/html;charset=utf-8");
response.getWriter().write("魑魅魍魉");
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

X+Y=Z

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值