这又是一个花费我差不多成十小时的问题——struts2 URL乱码!
我已经统一以utf-8编码了,包括jsp、action、数据库、tomcat的connector的URIEncoding、myeclipse和StrutsPrepareFilter的doFilter方法中都设置了编码格式为utf-8。
我用的是struts2.1.6,在网上搜索一下,得知到struts2.1.6的StrutsPrepareFilter有一个编码bug。对于这个bug,可以用spring2中的一个CharacterEncodingFilter来解决。具体做法是在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>utf-8</param-value>
</init-param>
<init-param>
<param-name>forceEncoding</param-name>
<param-value>true</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>encodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
需要注意的是:这个filter一定要在struts2的filter之前配置。但我用的是重写StrutsPrepareFilter的doFilter方法。这些做法好像对URL传过来的参数无效。
如果是struts2.1.3以下的可以在struts.properties文件中设置一下编码属性,具体做法是:
Struts.i18n.encoding=utf-8
Struts.local=xxx
……
以上的方法都用过了,但就是解决不了“乱码”这个怪兽。
最后,上天还是不负有心人。我用的浏览器IE8(兼容性视图)和firefox(3.5.6),当设置tomcat的URIEncoding为gbk时IE8在URL上传过来的中文不会乱码,而firefox在URL传过来的中文却是乱码。当设置tomcat的URIEncoding为utf-8时,firefox在URL传过来的中文正常,而IE8在URL上传过来的中文却又乱码了。可以猜想到IE8和firefox3.5.6在将URL的参数传到服务时先以某种格式编码,但各自的编码格式不相同!
这个时候,没别的办法了,只好用最原始的方法:先将要以URL方式传递的参数以和服务器的编码格式编码再传送,但就不用再在服务端解码了。也就是先将tomcat的URIEncoding设为utf-8,再将中文参数编成utf-8格式。我的做法是:
<a href="cAction/interRoom.action?roomName=<s:property value='@java.net.URLEncoder@encode(roomName,"utf-8")'/>" target="_blank"><s:property value="roomName"/></a>
注意在struts2.1.3以上的要开启静态方法使用功能。
分享到:
相关推荐
### Struts2中文乱码问题解决方案 在使用Struts2框架进行Web开发的过程中,中文乱码问题是一个常见的挑战。这不仅影响用户体验,还可能导致数据不一致等问题。为了解决这一问题,我们需要理解其背后的原理,并采取...
在Struts2的各个版本和不同过滤器设置下,GET方式提交的中文乱码问题仍然存在。一种可行的解决方案是在Tomcat服务器的配置文件`server.xml`中,修改`<Connector>`标签,添加`URIEncoding="UTF-8"`属性。这将强制...
Struts2 Action 处理中文乱码问题是一个常见的挑战,尤其是在进行Web开发时,由于编码格式不统一,可能导致输入或显示的中文字符出现乱码。以下是对两种解决方法的详细解释: 方法一:通过配置Struts2的i18n编码 ...
在Struts框架中,汉字乱码问题是一个常见的问题,特别是在处理中文输入时。解决这个问题涉及到多个层面,包括页面编码设置、服务器配置以及Struts的Servlet配置。以下是对这些问题的详细解释: 1. 页面编码设置: ...
解决这个问题通常涉及到编码设置的调整,下面将详细介绍两种方法来解决Struts中的中文乱码问题。 **方法一:配置Filter** 1. **添加过滤器**:首先,我们需要在Web应用的`web.xml`文件中添加一个`...
本文将深入探讨如何在Struts2.0中解决中文乱码问题,确保应用程序能够正确地处理和显示中文字符。 ### Struts2.0中文乱码问题分析 #### 1. 表单提交中文乱码 在Web应用中,表单是用户与服务器交互的主要方式之一...
在开发Java Web应用程序时,尤其是使用Struts2框架与JSP进行交互时,可能会遇到URL传参中文乱码的问题。这个问题通常涉及到字符编码的设置,包括客户端请求编码、服务器接收编码以及应用程序内部处理编码的统一。...
通过以上步骤,一般可以解决Struts 2.5.2框架下的中文乱码问题。但请注意,每个项目可能有不同的配置和需求,因此在实际应用中,还需要根据具体情况进行调试和调整。 在`myStruts`这个压缩包中,可能包含了示例代码...
### Struts 1.2 中文乱码问题详解与解决方案 #### 一、问题背景及原因分析 在 Web 应用开发过程中,特别是在使用 Java 的 Struts 1.2 框架时,中文乱码问题是开发者经常遇到的一个难题。这不仅影响用户体验,还会...
### Struts2中文乱码问题解决方案 在使用Struts2框架进行Web开发的过程中,中文乱码问题是一个常见的问题。这不仅影响用户体验,还可能导致数据处理错误。本文将详细介绍几种解决Struts2中文乱码问题的方法。 ####...
在开发基于Struts2框架的应用时,经常遇到的一个问题就是中文乱码。这不仅影响用户体验,还可能导致数据处理错误。本文将详细介绍如何彻底解决Struts2中的乱码问题,并提供实际可行的解决方案。 #### 二、乱码产生...
Struts2是一个非常流行的Java Web框架,用于构建和维护可扩展、模块化且易于管理的企业级应用程序。在处理中文字符时,Struts2可能会遇到乱码问题,这主要是因为字符编码不一致导致的。本DEMO是为了解决Struts2在...
### Struts2中文乱码问题解析与解决方案 #### 一、引言 在Web开发过程中,尤其是使用Struts2框架时,中文字符的正确显示是一个常见的挑战。本篇文章将详细介绍Struts2中出现中文乱码的原因及解决方案,帮助开发者更...
总结,解决Java Web中的URL中文乱码问题,关键在于发送请求时使用`URLEncoder.encode()`进行编码,以及在接收请求时设置正确的字符编码,如在JSP页面和Struts2 Action中。同时,可以通过配置过滤器确保整个应用程序...
当Struts2应用在JSP页面中尝试加载并显示这些文本时,可能会遇到乱码问题,尤其是在处理中文等非英文字符时更为常见。 乱码问题的根源在于字符编码的不匹配。当资源文件的编码格式与JSP页面或服务器解析时所使用的...
在开发Java Web应用程序时,Eclipse和Struts框架的组合可能会遇到中文乱码的问题,这主要涉及三个方面:页面乱码、参数乱码以及国际化乱码。以下是对这些乱码问题的详细解答: 1. 页面乱码: 当网页编码设置为非...
特别是在使用JSP与Struts2框架时,通过URL进行参数传递时经常会发生中文乱码问题。解决此类问题的策略主要涉及到了两个层面的配置:Struts2框架自身的配置以及Web服务器(如Apache Tomcat)的配置。 首先,要解决...
Struts2是一个非常流行的Java Web框架,用于构建和维护可扩展、模块化和灵活的Web应用程序。在处理用户请求时,Struts2框架扮演着核心角色,负责接收、处理和响应HTTP请求。在这个主题中,我们将深入探讨Struts2如何...
在Struts2项目中,可以通过修改`struts.properties`文件来指定项目的字符编码方式,从而解决中文乱码问题。具体配置如下: ```properties struts.objectFactory = spring struts.i18n.reload=true #struts.locale=...