请教大神Filter过滤中文问题? jspwebjava 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 提交的方式有两种,get和post,它们两处理乱码的方式也不同,get:reqest.setcharactorencoding﹉和response.setcontenttype同时写就可以了,post的话应该是前面说的后一个就可以了﹉大概记得是这样,希望能帮到楼主 Html页面编码没有声明:<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> /** * 中文乱码过滤处理 */ public void doFilter(ServletRequest svlrequest, ServletResponse svlresponse, FilterChain chain) throws IOException, ServletException { //将Servlet请求与响应对象转换成HttpServlet请求与响应对象 HttpServletRequest request=(HttpServletRequest)svlrequest; HttpServletResponse response=(HttpServletResponse)svlresponse; //获得请求的方式(1.post or 2.get),根据不同请求方式进行不同处理 String method = request.getMethod(); //1.以post方式提交的请求,直接设置编码为UTF-8 if(method.equalsIgnoreCase("post")) { try { request.setCharacterEncoding("UTF-8"); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } } //2.以get方式提交的请求 else { //取出客户提交的参数集 Enumeration<String> paramNames = request.getParameterNames(); //遍历参数集取出每个参数的名称及值 while(paramNames.hasMoreElements()) { String name = paramNames.nextElement();//取出参数名称 String values[] = request.getParameterValues(name);//根据参数名称取出其值 //如果参数值集不为空 if(values != null) { //如果参数值集中只有一个值 if(values.length == 1) { try { //调用toUTF(values[0])函数,(values[0]即第一个参数值)方法转换参数值的字元编码 String vlustr=toUTF(values[0]); //并将该值以属性的形式藏在request request.setAttribute(name, vlustr); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } } //如果参数值集中有多个值 else { //遍历参数值集 for(int i=0;i<values.length;i++) { try { //回圈依次将每个值调用toUTF(values[i])方法转换参数值的字元编码 String vlustr=toUTF(values[i]); values[i] = vlustr; } catch (UnsupportedEncodingException e) { e.printStackTrace(); } } //将该值以属性的形式藏在request request.setAttribute(name, values); } } } } //设置响应方式和支持中文的字元集 response.setContentType("text/html;charset=UTF-8"); //继续执行下一个filter,无一下个filter则执行请求 chain.doFilter(request, response); } http://blog.csdn.net/xuefeng0707/article/details/22897063 你可以分几部看看,首先看看传到后台是不是乱码java中文乱码跟很多情况有关系,如虚拟机的运行编码Dfile.encoding参数如使用IDE显示的Console参数 过滤器对get请求方式不启作用的 .使用String name=new String(request.getParameter("text").getBytes("ISO-8859-1"),"UTF-8");转化编码 请问如何使用ffmpeg获取flv视频长度 新浪博客段落截取预览问题 请问怎么限制一个用户只能在一台机上登陆? 如何利用XML或自关联数据库+JSP+javascript实现树形列表??? WAS : DSRA9110E: Statement is closed 如何走学习Java的第一步,谢谢 inner类中out调用的一个小问题 session中出现的bug,求解 初学jsp应该看什么书?--谢谢!~ 大家来帮我解答一点小小的问题,谢谢! java怎么调用QQ,新浪微博,腾讯微博的API?求助 SpringMvc request 参数乱码问题
get:reqest.setcharactorencoding﹉和response.setcontenttype同时写就可以了,post的话应该是前面说的后一个就可以了﹉大概记得是这样,希望能帮到楼主
* 中文乱码过滤处理
*/
public void doFilter(ServletRequest svlrequest, ServletResponse svlresponse,
FilterChain chain) throws IOException, ServletException
{
//将Servlet请求与响应对象转换成HttpServlet请求与响应对象
HttpServletRequest request=(HttpServletRequest)svlrequest;
HttpServletResponse response=(HttpServletResponse)svlresponse;
//获得请求的方式(1.post or 2.get),根据不同请求方式进行不同处理
String method = request.getMethod();
//1.以post方式提交的请求,直接设置编码为UTF-8
if(method.equalsIgnoreCase("post"))
{
try
{
request.setCharacterEncoding("UTF-8");
} catch (UnsupportedEncodingException e)
{
e.printStackTrace();
}
}
//2.以get方式提交的请求
else
{
//取出客户提交的参数集
Enumeration<String> paramNames = request.getParameterNames();
//遍历参数集取出每个参数的名称及值
while(paramNames.hasMoreElements())
{
String name = paramNames.nextElement();//取出参数名称
String values[] = request.getParameterValues(name);//根据参数名称取出其值
//如果参数值集不为空
if(values != null)
{
//如果参数值集中只有一个值
if(values.length == 1)
{
try
{
//调用toUTF(values[0])函数,(values[0]即第一个参数值)方法转换参数值的字元编码
String vlustr=toUTF(values[0]);
//并将该值以属性的形式藏在request
request.setAttribute(name, vlustr);
} catch (UnsupportedEncodingException e)
{
e.printStackTrace();
}
}
//如果参数值集中有多个值
else
{
//遍历参数值集
for(int i=0;i<values.length;i++)
{
try
{
//回圈依次将每个值调用toUTF(values[i])方法转换参数值的字元编码
String vlustr=toUTF(values[i]);
values[i] = vlustr;
} catch (UnsupportedEncodingException e)
{
e.printStackTrace();
}
}
//将该值以属性的形式藏在request
request.setAttribute(name, values);
}
}
}
}
//设置响应方式和支持中文的字元集
response.setContentType("text/html;charset=UTF-8");
//继续执行下一个filter,无一下个filter则执行请求
chain.doFilter(request, response);
}
首先看看传到后台是不是乱码
java中文乱码跟很多情况有关系,如虚拟机的运行编码Dfile.encoding参数
如使用IDE显示的Console参数