(doGet)Request请求乱码
介绍:
jsp中 首行设置编码格式
表单所在页面使用神马格式解码,
那么该页面就使用神马格式编码
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
乱码分析:
服务器默认的编码格式设ISO-8859-1 dantin ,如果不加设置,
浏览器设置的编码格式是用utf-8,
而服务器的解码是用ISO-8859-1,就会乱码
就会产生乱码
解决方案:
1.更改服务器的配置信息
路径:E:\apache-tomcat-7.0.42\conf\server.xml
<Connector port="8080"
protocol="HTTP/1.1"
URIEncoding="UTF-8"
connectionTimeout="20000"
redirectPort="8443" />
加上 URIEncoding="UTF-8";OK
2.使用逆推法
(doPost)Request请求乱码
Post提交和Get提交, 区别:
在服务器解码时间点不同,其他都相同
get提交 解码时间点 ====> 请求一旦到达服务器就会立即解码参数
post提交 解码时间点=====> 调用获得参数方法时 才会解码解决方案:
只需在获得参数方法前,设置响应的解码码表
案例:
request Get()
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
System.out.println("---------------get------------");
String name = req.getParameter("name");
// 将乱码使用latin码ISO-8859-1----------->byte
byte[] bytes = name.getBytes("ISO-8859-1");
// ISO-8859-1-------------------->UTF-8码表
String name1 = new String(bytes, "UTF-8");
System.out.println("=========" + name1);
}
req Post()
req.setCharacterEncoding("UTF-8");
String name = req.getParameter("name");