黑马程序员技术交流社区
标题:
struts2的字符集问题
[打印本页]
作者:
柴乔军
时间:
2013-1-18 16:01
标题:
struts2的字符集问题
本帖最后由 柴乔军 于 2013-1-18 16:05 编辑
使用的是struts2.1.6版本,在struts2的配置文件中配置了
<constant name="struts.i18n.encoding" value="GBK"/>
没有效果,又在web.xml中配置了spring的字符过滤器,并放在了struts2过滤器之前,现在往数据库中保存数据时,
是不会乱码的,可以正常保存入中文数据,如下:
<filter>
<filter-name>CharacterEncodingFilter</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>GBK</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>CharacterEncodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<!-- session管理 -->
<filter>
<filter-name>OpenSessionInViewFilter</filter-name>
<filter-class>org.springframework.orm.hibernate3.support.OpenSessionInViewFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>OpenSessionInViewFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<!-- 配置Spring -->
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:applicationContext-*.xml</param-value>
</context-param>
<listener>
<listener-class>com.juchen.util.InitData</listener-class>
</listener>
<!-- 配置Struts -->
<filter>
<filter-name>struts</filter-name>
<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>struts</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
复制代码
可在页面上进行模糊查询,页面间传递模糊查询信息时却出现乱码,求高人解决!
未命名1.jpg
(7.31 KB, 下载次数: 42)
下载附件
2013-1-18 15:59 上传
当点下一页时就乱了。。。
未命名2.jpg
(7.32 KB, 下载次数: 50)
下载附件
2013-1-18 16:01 上传
作者:
王少雷
时间:
2013-1-18 19:12
我肯定配置文件没错,楼主 过滤器是怎么写的,能贴出代码看看吗?
作者:
王少雷
时间:
2013-1-18 19:14
本帖最后由 王少雷 于 2013-1-18 19:15 编辑
public class LanguageFilter extends HttpServlet implements Filter {
private static final long serialVersionUID = -7158070919202747452L;
private FilterConfig fconfig;
public void init(FilterConfig fconfig) throws ServletException {
this.fconfig=fconfig;
}
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain filterChain) throws IOException, ServletException {
try
{
String character=fconfig.getInitParameter("encoding");
if (character==null || "".equals(character)) character="utf-8";
request.setCharacterEncoding(character);
response.setCharacterEncoding(character);
filterChain.doFilter(request, response);
}
catch(Exception ex)
{
ex.printStackTrace();
}
}
}
这是我写的一个过滤器,你可以参考一下。配置文件里改成utf-8再试试。
作者:
柴乔军
时间:
2013-1-18 19:17
过滤器是用的Spring集成的,不是自己写的,过滤器能够肯定没有问题,保存到数据库里的中文数据都是正确的
作者:
柴乔军
时间:
2013-1-18 19:21
刚找到了一种解决方法,但是要改Tomcat的配置文件,在server.xml中做了修改
加入了URIEncoding="GBK" ,自己定义的过滤器也没有用
<Connector port="80" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443"
URIEncoding="GBK" />
复制代码
作者:
yong230
时间:
2013-1-18 21:05
URIEncoding只对Get方式传递的中文参数起作用,对于post提交的中文表单数据必须加过滤器设置编码方式
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2