日期:2014-05-17  浏览次数:20651 次

struts1 乱码问题
我用 ActionForm 取到页面的属性值。
在Action中使用这些属性值同数据库比较时。取得的中文是乱码。

我使用了filter 也不行,如下

package com.contract.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;

public class SetCharacterEncodingFilter implements Filter {

public void destroy() {

}

public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
request.setCharacterEncoding("gb2312");  
response.setCharacterEncoding("gb2312");  
chain.doFilter(request, response);
}

public void init(FilterConfig arg0) throws ServletException {

}

}


xml配置

 <filter>
  <filter-name>encodeFilter</filter-name>
  <filter-class>com.contract.filter.SetCharacterEncodingFilter</filter-class>
  </filter>
  <filter-mapping>
  <filter-name>encodeFilter</filter-name>
  <url-pattern>/*</url-pattern>
  </filter-mapping>


------解决方案--------------------
是数据库中取出来的乱码呀,还是页面上获取之后显示的是乱码呀?
------解决方案--------------------
说的太迷糊了
不过我想应该是页面的传过来的是乱码

用 String newText = new String("乱码".getBytes("ISO-8859-1"), "GBK");
------解决方案--------------------
乱码,用filter解决呀,页面、源文件、工程编码要一致!
------解决方案--------------------
数据库的编码不一致