-
get中文乱码
在Tomcat7及以下版本 ,客户端以UTF-8的编码传输数据到服务器端,而服务器端的request对象使用ISO8859-1字符编码来接收数据,服务器和客户端沟通的编码不一致导致产生中文乱码。
解决办法:
在接收到数据后,先获取request对象以IOS8859-1字符编码接收到的原始数据的字节数组,然后通过字节数组以指定的编码构建字符串,解决乱码问题。
Tomcat8的版本中get方式不会出现乱码,服务器对url的编码格式可以进行自动转换。
-
post中文乱码
解决方案:使用从ServletRequest接口继承而来的setCharacterEncoding(charset)方法进行统一的编码设置。
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//对request请求对象设置统一的编码
req.setCharacterEncoding("UTF-8");
//1.获取用户请求发送的数据
String username=req.getParameter("username");
String password=req.getParameter("password");
System.out.println("提交数据"+username+"\t"+password);
}
-
解决响应输出中文乱码
1.设置服务器端响应的编码格式
2.设置客户端响应内容的头内容的文件类型及编码格式
resp.setC-haracterEncoding("UTF-8");
resp.setHeader("Content-Type","text/html;charset=utf-8");
或者同时设置服务端的编码格式和客户端响应文件类型及响应时的编码格式
resp.setContentType("text/html;charset=utf-8");
注意需在获取流之前设置。