当前位置: 代码迷 >> Java Web开发 >> ie6下request.getParameter("key")乱码,该如何解决
  详细解决方案

ie6下request.getParameter("key")乱码,该如何解决

热度:8774   发布时间:2013-02-25 21:22:12.0
ie6下request.getParameter("key")乱码
“杜,fenchangx,制造工程处1” 这样的字符串,在JSP页面获取的时候就会乱码,只有IE6有这个问题,请教各位大神,在JSP页面上怎样修改这个乱码问题,所有编码格式都设置成UTF-8了 在页面上new String(request.getParameter("key").getBytes("ISO-8859-1"),"UTF-8");还是乱码,在线等,谢谢了

------解决方案--------------------------------------------------------
在 每个JSP页面 request.getParameter()之前加上下面一句
request.setCharacterEncoding("GBK")
------解决方案--------------------------------------------------------
终极办法,使用过滤器,代码如下

/*
* 过滤器处理核心
*/
@SuppressWarnings("unchecked")
public void doFilter(ServletRequest req, ServletResponse resp,
FilterChain chain) throws IOException, ServletException {
HttpServletRequest httpRequest = (HttpServletRequest) req;
if ("POST".equalsIgnoreCase(httpRequest.getMethod())) {
httpRequest.setCharacterEncoding(encode);
} else {
// 得到所有参数和值的键值对
Map map = httpRequest.getParameterMap();
Set set = map.keySet();
Iterator it = set.iterator();
//循环遍历所有的字符参数,只针对于字符串类型的字符进行处理,包括字符串和字符串数组
while (it.hasNext()) {
Object value = map.get(it.next());
if (value instanceof String[]) {
//把字符串数组进行转码
String[] values = (String[]) value;
for (int i = 0; i < values.length; i++) {
values[i] = new String(values[i].getBytes("ISO-8859-1"), encode);
}
} else {
String str = (String) value;
str = new String(str.getBytes("ISO-8859-1"), encode);
}
}
}
// 将请求交给下一个资源
chain.doFilter(req, resp);
}
然后再web.xml 中配置一下即可,希望能帮到你
  相关解决方案