1.Post请求
表单提交用的大多是post方法,如果接收到的数据出现乱码,在其提交前加上编码格式,即request.setCharacterEncoding("utf-8")方法;
2.get请求
该方式请求是将数据提交到地址栏上,此时如设置上述方法是不起作用的,原因就在于服务器默认的编码格式为ISO8859-1,如解决乱码问题,可用方法一:设置服务器编码格式为UTF-8,在tomcat中<Connector>设置,但此方法不太好,毕竟服务器的变动不是小事;方法二,设置URL编码格式,使用URLEncoder.encode(URL,"UTF-8");方法三,将字符串通过ISO8859-1进行解码,得到字节数组,然后数组使用UTF-8进行编码,得到的数据就不会出现乱码;
3.例子
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//获取域对象中的值
String name = (String) req.getAttribute("NAME");
String id = (String) req.getAttribute("ID");
//转码,服务器默认使用ISO8859-1,将其转换成UTF-8
String name1 = new String(name.getBytes("ISO8859-1"),"UTF-8");
String id1 = new String(id.getBytes("ISO8859-1"),"UTF-8");
//在浏览器输出值
resp.setContentType("text/html;charset=UTF-8");
PrintWriter writer = resp.getWriter();
writer.write("姓名:" + name1 + "<br>");
writer.write("编号:" + id1);
}