首先,明确两句话的意思
req.setCharacterEncoding("utf-8");//服务器以utf-8的字符集接受(解码)来自客户端的内容
resp.setCharacterEncoding("utf-8");//服务器以utf-8的字符集将服务端的字符串发送给客户端(浏览器)
这两句话是设置缓冲区的编码
request请求
<form action="${pageContext.request.contextPath}/login" method="post" accept-charset="UTF-8">
<%--accept-charset设置浏览器接受服务端发来的信息的解码方式--%>
不论post,还是get请求都是一样的
response请求
//设置服务器端的编码
resp.setHeader("Content-type", "text/html;charset=UTF-8");
//通知浏览器服务器发送的数据格式
resp.setCharacterEncoding("utf-8");
两句话可以合为一体
resp.setContentType("text/html;charset=UTF-8");
关于tomcat的配置
只需要在conf/server.xml中
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443"
URIEncoding="UTF-8" />
修改注册表,修改catalina.bat都是完全不需要的操作
总结,解决乱码就三句话
//解决乱码问题
req.setCharacterEncoding("UTF-8");
resp.setCharacterEncoding("UTF-8");
resp.setContentType("text/html;charset=utf-8");