我用 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解决呀,页面、源文件、工程编码要一致!
------解决方案--------------------
数据库的编码不一致