struts.xml/////////////////////////////////////////////////////////////////////////////////////////////
<filter>
<filter-name>struts2 </filter-name>
<filter-class>
org.apache.struts2.dispatcher.FilterDispatcher
</filter-class>
</filter>
<filter>
<filter-name>filteraps </filter-name>
<filter-class>com.service.filtera </filter-class>
</filter>
<filter-mapping>
<filter-name>struts2 </filter-name>
<url-pattern>/* </url-pattern>
</filter-mapping> //////////////////////////////////////////////////////////////////////////////////////////////////////
package com.service; 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 filtera implements Filter {
public void destroy() {
}
public void doFilter(ServletRequest arg0, ServletResponse arg1,
FilterChain arg2) throws IOException, ServletException {
arg0.setCharacterEncoding("GBK");
arg1.setCharacterEncoding("GBK");
arg2.doFilter(arg0, arg1);
}
public void init(FilterConfig arg0) throws ServletException {
}
} 然后我在每个java类前加入import javax.servlet.Filter; 我在对sql2000执行插入中文的语句时。数据库里的所有中文都显示为一串"??????"数字插入则正常。请问该怎么解决呢?
<filter>
<filter-name>struts2 </filter-name>
<filter-class>
org.apache.struts2.dispatcher.FilterDispatcher
</filter-class>
</filter>
<filter>
<filter-name>filteraps </filter-name>
<filter-class>com.service.filtera </filter-class>
</filter>
<filter-mapping>
<filter-name>struts2 </filter-name>
<url-pattern>/* </url-pattern>
</filter-mapping> //////////////////////////////////////////////////////////////////////////////////////////////////////
package com.service; 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 filtera implements Filter {
public void destroy() {
}
public void doFilter(ServletRequest arg0, ServletResponse arg1,
FilterChain arg2) throws IOException, ServletException {
arg0.setCharacterEncoding("GBK");
arg1.setCharacterEncoding("GBK");
arg2.doFilter(arg0, arg1);
}
public void init(FilterConfig arg0) throws ServletException {
}
} 然后我在每个java类前加入import javax.servlet.Filter; 我在对sql2000执行插入中文的语句时。数据库里的所有中文都显示为一串"??????"数字插入则正常。请问该怎么解决呢?
在从页面获取之后,插入数据库前,把这个字符串看一下是否乱码,定位乱码是由于web还是数据库
得用
String a= request.getParameter("name");
a=new String(a.getBytes("ISO-8859-1"),"GBK");
这个只是tomcat下的Get的处理方式,不同的应用服务器是不一样的
if(str==null){
str="";
}else{
try{
str=(new String(str.getBytes("iso-8859-1"),"GB2312")).trim();
}catch(Exception e){
e.printStackTrace(System.err);
}
}
return str;
}
方法:在Struts.xml文件中 加入<constant name="struts.i18n.encoding" value="gbk"></constant>
<filter>
<filter-name>struts2 </filter-name>
<filter-class>
org.apache.struts2.dispatcher.FilterDispatcher
</filter-class>
</filter>
<filter>
<filter-name>filteraps </filter-name>
<filter-class>com.service.filtera </filter-class>
</filter>
<filter-mapping>
<filter-name>struts2 </filter-name>
<url-pattern>/* </url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>filteraps</filter-name>
<url-pattern>/* </url-pattern>
</filter-mapping> 这样你在试试