解决的方法有两个:
1. 将GET请求改成POST请求,然后就可以使用 request.setCharacterEncoding方法设置编码,并使用 request.getParameter方法直接获得中文请求参数了。
2. 不用改GET请求,在Servlet中使用如下的代码来得到中文请求参数。
String name
=
new
String(request.getParameter(
"
name
"
).getBytes(
"
ISO-8859-1
"
),
"
GBK
"
);
综上所述,如果使用了GET请求,则setCharacterEncoding方法不起作用,只能使用上面的代码来解决,而使用POST请求,尽管 setCharacterEncoding 方法起作用,但使用上面的代码仍然好使(在这时不能使用setCharacterEncoding方法将编码格式设置成非iso-8859-1格式)。因此,如果想让Servlet可以同时处理GET和POST请求中的中文信息,除了判断这两种方法外,还可以使用上面的代码来同时处理这两种请求的中文信息。
笔者建议使用如下的代码来获得中文请求参数:
String name
=
new
String(request.getParameter(
"
name
"
).getBytes(
"
ISO-8859-1
"
),
"
GBK
"
);
因为上面的代码是利用了Java的编码能力,对于所有的Web服务器都会有效,而setCharacterEncoding方法是通过Web服务器支持的,并不是所有的Web服务器都会对该方法有很好的支持。
原文:http://www.blogjava.net/nokiaguy/archive/2008/09/05/227242.html