1.以POST方式提交包含中文字符的表单
WEB容器默认采用的编码方式是ISO-8859-1,在Servlet和JSP里面,采用getParameter()方法获取的参数是经过ISO-8859-1编码的字符,这就是导致了乱码的出现。其实,对于POST的HTTP请求,可以在程序里讲请求的字符编码修改为GBK,如果请求处理完以后,返回给浏览器的内容也包含中文的话,还需要设置内容的编码方式也是GBK。
对于Servlet来说,需要加上一下这两句:
request.setCharacterEncoding("GBK");
response.setContentType("text/html;charset=GBK");
对于JSP,则需要加上这两句:
<%@page contentType="test/html;charset=GBK"%>
<%request.setCharacterEncoding("GBK");%>
2.以GET方式提交包含中文字符的表单
GET方式的中文字符是包含在URL里面的,不属于HTTP请求的正文部分,采用setCharacterEncoding()方式是没有作用的,需要以下代码,将字符串按照指定的编码方式进行重新装配。
String param=request.getparameter("param");
param=new String(param.getBytes(),"GBK");
3.JSP文件的编码问题
JSP文件里本身可能会包含中文字符,但是由于编辑器的设置不同也有可能产生中文乱码问题。例如,采用记事本写好的JSP文件可能编码格式是GBK的,但是如果将它复制到编码为UTF-8的eclipse里面,JSP的中文字符就变成乱码了。所以需要采用如下代码设置JSP的编码方式:
<%@page language="java" pageEncoding="UTF-8"%>