jsp form 表单或超链接传参数中文乱码问题小结

最近遇到一些form表单或超链接传参数,中文参数乱码的问题,现总结如下:

1、form表单,post方式

      解决方法:发送和接收方选用相同编码格式,如GBK

2、form表单,不设定方式

      解决方法:过滤器

       CharacterEncodingFilter.java      编码处理类

package filter;

import java.io.IOException;

import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class CharacterEncodingFilter extends HttpServlet implements Filter {
	private static final long serialVersionUID = 1L;
	private FilterConfig filterConfig; 
	
	public void init(FilterConfig filterConfig) throws ServletException { 
		this.filterConfig = filterConfig; 
	} 
	
	public void doFilter(ServletRequest request, ServletResponse response, FilterChain filterChain) { 
		try { 
			String encoding=filterConfig.getInitParameter("encoding");//从WEB.xml配置文件中取出参数,这样我们可以通过配置修改编码格式. 
			request.setCharacterEncoding(encoding);//设置请求的编码格式 
			//System.out.println(encoding); 
			filterChain.doFilter(request, response);//关键 
		} catch (ServletException sx) { 
			filterConfig.getServletContext().log(sx.getMessage()); 
		} catch (IOException iox) { 
			filterConfig.getServletContext().log(iox.getMessage()); 
		} 
	} 
	
	public void destroy() { } 
	
	protected void doGet(HttpServletRequest arg0, HttpServletResponse arg1) throws ServletException, IOException { 
		super.doGet(arg0, arg1); 
	} 
	
	protected void doPost(HttpServletRequest arg0, HttpServletResponse arg1) throws ServletException, IOException { 
		super.doPost(arg0, arg1); 
	} 
}

        web.xml配置

         <filter>
		<filter-name>CharacterEncoding</filter-name>
		<filter-class>filter.CharacterEncodingFilter</filter-class>
		<init-param>
			<param-name>encoding</param-name>
			<param-value>GBK</param-value>
		</init-param>
	</filter>
	<filter-mapping>
		<filter-name>CharacterEncoding</filter-name>
		<url-pattern>/*</url-pattern>
	</filter-mapping>


3、如上述方法仍有问题,则检查tomcat下conf中的server.xml文件

     解决方法:

    <Connector port="8080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" URIEncoding="GBK" />
 

以上内容位个人见解,经过测试,仅供参考。

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值