遇到中文处理问题,使用的架构是
Struts1.2+Hibernate3.1
工具
Eclipse3.3 +myeclipse6.0
在页面提交又中文时.才Action的request里面全是乱码.就算调用request.setCharacterEncoding()方法还是乱码
页面编码GBK.GB2312和UFT-8都试过了
写过滤器也不能解决
如果换标签(开始用的heml:form的struts标签,换成form这种html标签)的换就不会出现乱码问题
开始以为是Eclipse的问题,后来换Eclipse3.1还是不行
请问有没有人也遇到过这种问题,怎么解决的?Struts1.2和Struts1.1的运行机制又什么改变吗?
Struts1.2+Hibernate3.1
工具
Eclipse3.3 +myeclipse6.0
在页面提交又中文时.才Action的request里面全是乱码.就算调用request.setCharacterEncoding()方法还是乱码
页面编码GBK.GB2312和UFT-8都试过了
写过滤器也不能解决
如果换标签(开始用的heml:form的struts标签,换成form这种html标签)的换就不会出现乱码问题
开始以为是Eclipse的问题,后来换Eclipse3.1还是不行
请问有没有人也遇到过这种问题,怎么解决的?Struts1.2和Struts1.1的运行机制又什么改变吗?
解决方案 »
- 流水号问题
- 急!!!为什么总是编译不了servlet,classpath应该没有错啊。。在线等待大虾指点。。
- 请教如何在jsp中实现正态分布图效果
- 请教大家 FCKeditor 和struts的html标签结合的问题啊
- java.io.CharConversionException: EOF这个错误是怎么引起的呀?
- 请教各位高手(很急)(有点穷,少给一点分,表示敬意)
- jsp文件中怎么显示中文
- 哪位前辈去sohu面试过,请指教一下.
- JSP页面中如何显示javascript中的变量?
- 模淘宝购买商品时的效果,求思路
- JSF页面中如何弹出消息对话框?
- jsp+orcal+ubuntu7.04,如何安装和配置
在jsp页面用pageEncoding没用
在Action中用request.setCharacterEncoding()也没用
过滤器也没用
但是在页面使用html标签,比如text,form而不用html:text html:form
就不会出现中文问题.但是不可能不用struts的标签啊.
<filter>
<filter-name>encodingFilter</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>gb2312</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>encodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
2. package StudyNews;
3.
4. import javax.servlet.http.HttpServlet;
5. import javax.servlet.http.HttpServletRequest;
6. import javax.servlet.http.HttpServletResponse;
7. import org.apache.struts.action.RequestProcessor;
8.
9. import org.apache.struts.config.ForwardConfig;
10. import org.apache.commons.logging.Log;
11.
12.
13. public class MyRequestProcessor extends RequestProcessor {
14.
15. public MyRequestProcessor() {}
16.
17. protected boolean processPreprocess( HttpServletRequest request,
18. HttpServletResponse response ){
19.
20. try{
21. request.setCharacterEncoding("latin1");//此处为自己用的数据库的字符集 <4>
22.
23. }
24. catch(Exception ex){
25. System.out.println("字符集设置失败");
26.
27. }
28.
29. return true;
30. }
31.
32. }xml 代码 <controller processorClass="StudyNews.MyRequestProcessor" />
详细见此文。基于struts的乱码最好解决了
http://bangyan2003.javaeye.com/admin/show/131754
定义一个Filter来自动地实现字符编码的转化,然后再在xml文件中配置这个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() { this.encoding=null;
this.filterConfig=null; } public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
// 选择使用的字符编码
if(ignore ¦ ¦(request.getCharacterEncoding()==null))
{
String encoding=selectEncoding(request);
if(encoding!=null)
{
request.setCharacterEncoding(encoding);
}
//将控制权交给下一个Filter
chain.doFilter(request, response);
}
}
//将这个filter放置在服务中
public void init(FilterConfig filterConfig) throws ServletException {
this.encoding=filterConfig.getInitParameter( "encoding ");
String value=filterConfig.getInitParameter( "ignore ");
if(value==null)
this.ignore=true;
else if(value.equalsIgnoreCase( "true "))
this.ignore=true;
else if(value.equalsIgnoreCase( "yes "))
this.ignore=true;
else
this.ignore=false; }
protected String selectEncoding(ServletRequest request)
{
return(this.encoding);
}
protected String encoding=null;
protected FilterConfig filterConfig=null;
protected boolean ignore=true; }
xml配置如下:
<filter >
<filter-name >SetCharacterEncodingFilter </filter-name >
<filter-class >SetCharacterEncodingFilter </filter-class >
<init-param >
<param_name >encoding </param_name >
<param-value >utf-8 </param-value >
</init-param >
</filter >
<filter-mapping >
<filter-name >SetCharacterEncodingFilter </filter-name >
<url_pattern >/* </url_pattern >
</filter-mapping >
我试了好多次了.最后确定页面数据在被ActionForm包装的时候就转成乱码了.写了过滤器也一样的
如果用html标签就没问题,ActioinForm不会包装成乱码
写个过滤器就好了,注意要在web.xml配置一下