中文处理问题Struts1.2+Hibernate3.1 + Eclipse3.3 +myeclipse6.0

a1983810 2007-11-16 09:57:49
遇到中文处理问题,使用的架构是
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的运行机制又什么改变吗?
...全文
272 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
yanfeifei 2008-11-05
  • 打赏
  • 举报
回复
我的也是遇到同样的问题但是
写个过滤器就好了,注意要在web.xml配置一下
a1983810 2007-11-20
  • 打赏
  • 举报
回复
不是这些问题
我试了好多次了.最后确定页面数据在被ActionForm包装的时候就转成乱码了.写了过滤器也一样的
如果用html标签就没问题,ActioinForm不会包装成乱码
etao528 2007-11-20
  • 打赏
  • 举报
回复
如果你使用过UFT-8的话,应该不会有问题的啊!你再试试
HITCCBoy 2007-11-17
  • 打赏
  • 举报
回复
试一试这个
定义一个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 >
nanjg 2007-11-17
  • 打赏
  • 举报
回复
 1.  MyRequestProcessor.java
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
myitpro 2007-11-16
  • 打赏
  • 举报
回复
看上去有点弦啊, 大哥,行不行啊!
a1983810 2007-11-16
  • 打赏
  • 举报
回复
现在在tomcat6.0的conf/server.xml中设置页面编码没用
在jsp页面用pageEncoding没用
在Action中用request.setCharacterEncoding()也没用
过滤器也没用
但是在页面使用html标签,比如text,form而不用html:text html:form
就不会出现中文问题.但是不可能不用struts的标签啊.
zhb_821012 2007-11-16
  • 打赏
  • 举报
回复
你确定过滤器起到作用了?必须要加过滤器
zhb_821012 2007-11-16
  • 打赏
  • 举报
回复
不会吧
从来没遇到过啊
chenyan1984 2007-11-16
  • 打赏
  • 举报
回复
在web.xml中配置一下就可以了
<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>

81,114

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧