关于myeclipse中web project中文乱码的解决《过滤器Filter》

在使用HttpServletRequest.getParameter(String name)时我们可能会取得中文的乱码。

问题描述:

当利用getParameter()方法去取HTML元素中value值时当元素的value值为中文时用该方法取到的值可能为乱码。这时候我们需要的取得它的中文。

 

a) 方法一
在利用getParameter方法之前添加如下语句 
request.setCharacterEncoding("utf_8"); 

相对来说用起来比较方便而且对提交方式没有限制。

 

b) 方法二

如果是get方式提交有中文,楼主还可以去tomcat 的server.xml配置文件里在 
<Connector port="8080" protocol="HTTP/1.1"  
               connectionTimeout="20000"  
        redirectPort="8443" /> 
中加上URIEncoding="GB2312"即可。 

缺点:无法解决用post方式提交时的中午乱码

 

c) 方法三

String kind = new String(request.getParameter("RBLkind").getBytes("iso-8859-1"), "utf-8"); 
但是这个方法只能针对一行一行代码修改要是你要多次利用getParameter方法取

值时要多次输入此行代码比较麻烦。

 

d) 过滤器(Filter)
在使用过滤器解决乱码问题是form表单的提交方式一定要设为POST默认的是GET。 
在web.xml里面加过滤器遇上全部的jsp、servlet、do等所有乱码问题都得消失哈。 

(1)、先在项目的src中servlt包添加一个过滤器代码如下

package servlet; 
 
import java.io.IOException; 
import javax.servlet.*; 
import javax.servlet.http.HttpServletRequest; 
import javax.servlet.http.HttpServletResponse; 
 
public final class CharacterEncodingFilter implements Filter 
{ 
 
private String encoding; 
  private boolean ignore; 
 
  public CharacterEncodingFilter() 
  { 
   encoding = "utf-8"; 
   ignore = false; 
  } 
 
  public void init(FilterConfig config) 
  { 
   if (config.getInitParameter("encoding") != null) 
    encoding = config.getInitParameter("encoding"); 
   if (config.getInitParameter("ignore") != null) 
ignore = (new 
Boolean(config.getInitParameter("ignore"))) 
      .booleanValue(); 
  } 
 
  public void doFilter(ServletRequest request, ServletResponse 
response, 
    FilterChain chain) throws IOException, ServletException 
  { 
   HttpServletRequest req = (HttpServletRequest) request; 
   HttpServletResponse res = (HttpServletResponse) response; 
   if (!ignore) 
   { 
    req.setCharacterEncoding(encoding); 
    res.setCharacterEncoding(encoding); 
   } 
   chain.doFilter(request, response); 
  } 
 
  public void destroy() 
{ 
  } 
 
} 
 (2)、在web.xml里面添加过滤器filter 
 
 <filter> 
  <filter-name>Set Character Encoding</filter-name> 
  <filter-class>servlet.CharacterEncodingFilter</filter-class> 
  <init-param> 
   <param-name>encoding</param-name> 
   <param-value>UTF-8</param-value> 
  </init-param> 
 </filter> 
 
 <filter-mapping> 
  <filter-name>Set Character Encoding</filter-name> 
  <url-pattern>*.do</url-pattern> 
 </filter-mapping> 
 
 <!-- 过滤所有的jsp文件 --> 
 <filter-mapping> 
  <filter-name>Set Character Encoding</filter-name> 
  <url-pattern>*.jsp</url-pattern> 
 </filter-mapping> 
 
 <!-- 过滤所有的servlet文件 --> 
 <filter-mapping> 
  <filter-name>Set Character Encoding</filter-name> 
  <url-pattern>/*</url-pattern> 
</filter-mapping>
 
这样所有的request.getparameter都会经过这个过滤器处理乱码问题就没有了而且可以
任意修改<param-value>UTF-8</param-value>不过本人还是较为推荐UTF-8。  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值