Tomcat中的编码默认是iso8859-1
(除非你自己手动设置其编码如下,在server.xml)
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443"
URIEncoding="UTF-8"
浏览器->中文->UTF-8->byte[]->Tomcat->byte[]->iso8859-1->???->iso8859-1->byte[]->UTF-8->中文
doGet()方法:
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
request.setCharacterEncoding("UTF-8");
String username = request.getParameter("username");
String password = request.getParameter("password");
username = new String(username.getBytes("ISO8859-1"),"UTF-8");
System.out.println("GET");
System.out.println(username);
System.out.println(password);
}
doPost()方法:
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
request.setCharacterEncoding("UTF-8");
String username = request.getParameter("username");
String password = request.getParameter("password");
System.out.println("POST");
System.out.println(username);
System.out.println(password);
}
(除非你自己手动设置其编码如下,在server.xml)
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443"
URIEncoding="UTF-8"
/>
否则:
get方式解决方案:浏览器->中文->UTF-8->byte[]->Tomcat->byte[]->iso8859-1->???->iso8859-1->byte[]->UTF-8->中文
doGet()方法:
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
request.setCharacterEncoding("UTF-8");
String username = request.getParameter("username");
String password = request.getParameter("password");
username = new String(username.getBytes("ISO8859-1"),"UTF-8");
System.out.println("GET");
System.out.println(username);
System.out.println(password);
}
doPost()方法:
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
request.setCharacterEncoding("UTF-8");
String username = request.getParameter("username");
String password = request.getParameter("password");
System.out.println("POST");
System.out.println(username);
System.out.println(password);
}