当客户端通过GET请求向服务器发送数据时,使用request.getParameter()获取的数据被服务器误认为是ISO-8859-1编码的,也就是说,客户端发送过来的数据无论是通过UTF-8还是GBK编码的,服务器都通过ISO-8859-1来解码。所以,我们获取到数据后需要通过ISO-8859-1编码,再用正确的编码格式进行解码,假设服务器发送的数据是通过UTF-8编码的,我们要获取请求参数name的值,如下:
String name = request.getParameter("name");
name = new String(name.getBytes("ISO-8859-1"),"UTF-8");
1.4 POST请求解读编码
当客户端通过POST请求向服务器发送数据时,使用request.getParater()获取请求数据,默认情况下,服务器还是通过ISO-8859-1来解码,但我们通过request.getParameter()获取请求数据之前可以通过request.setCharacterEncoding("UTF-8")来指定编码,然后再使用request.getParameter()来获取请求参数,那么服务器就是通过指定编码来解码了。例如:
request.setCharacterEncoding("UTF-8")
String name = request.getParameter("name");