话说utf-8是支持中文的
utf-8 的中文编码是一个中文字3个字节
gbk 是2个字节
至于中文问题, 你的jsp页面是否有
<%@page contentType="text/html; charset=utf-8" pageEncoding="utf-8" %>
头文件
要判断是get方式提交的还是post ,get方式和post方式处理中文乱码都不一样的,get先要打成iso8859-1然后再转换成utf8,post直接设置
===========================================================
public void doFilter(ServletRequest servletrequest, ServletResponse servletresponse,
FilterChain chain) throws IOException, ServletException {
HttpServletRequest request = (HttpServletRequest) servletrequest;
HttpServletResponse response = (HttpServletResponse) servletresponse;
response.setContentType("text/html;charset=UTF-8");
if (request.getMethod().equalsIgnoreCase("POST")) {
request.setCharacterEncoding("UTF-8");
} else if (request.getMethod().equalsIgnoreCase("GET")) {
Map map = request.getParameterMap();
Iterator it = map.keySet().iterator();
String key = null;
String[] values = null;
while (it.hasNext()) {
key = it.next().toString();
values = (String[]) map.get(key);
for (int i = 0; i < values.length; i++) {
values[i] = new String(values[i].getBytes("ISO-8859-1"),"UTF-8");
}
}
}
chain.doFilter(servletrequest, servletresponse);
}
UTF-8不支持中文,支持中文的只有GBK和GB2312
还有如果用JS传参数带中文,那是需要转编码,类似
if(request.getParameter("aaa") != null){
String a = new String(request.getParameter("aaa").getBytes("iso8859-1"),"gb2312");
}