详解

Request接收参数时有get和post两种请求方式,但是处理中文的编码却不一样,我们在做项目时会全站都采用统一的编码,最常用的就是UTF-8,在UTF-8编码的项目中当我们使用post请求时:

—- 处理post编码问题,请求信息中,只有POST存在正文,所谓POST参数编码就是请求正文的编码。

—- 默认情况下,使用getParameter()获取POST请求参数时,使用的是ISO-8859-1编码。



1
2
3
4
5
String name = request.getParameter("name");

name=new String(name.getBytes("ISO-8859-1"), "UTF-8");

System.out.println(name);

        因为在获取参数时已经被错误编码了,但我们知道,乱码的两个原因:本来是使用UTF-8编码的,还错误的使用了ISO-8859-1编码。所以我们可以先使用ISO-8859-1获取字节数组,然后再使用正确的UTF-8编码得到字符串,这样就没问题了。
        request的setCharacterEncoding()可以设置编码,当然这必须在调用所有的getParameter()方法之前调用request的setCharacterEncoding()方法来设置编码,这样就不会使用ISO解读字符串了,而是使用你给定的编码来解读。



1
2
request.setCharaterEncoding("UTF-8");
String name=request.getParameter("name");
每个请求在开头只需要调用request的setCharacterEncoding()一次,便可所有的编码都会以这种方式来解读,但要注意,只对请求正文有效(POST参数)。