不管是在Struts配置文件中设置<constant name=”struts.i18n.encoding” value=”gb2312″ />或者在Action方法里面设置request.setCharacterEncoding(“gb2312”); 都没用!request是实现了ServletRequestAware  
 | 
  | 
 楼主说的以上两种方式都是针对post请求才有效果。,如果是post, 是不是和页面编码不统一,,如果不是,可以new String(request.getParameter(“”).getBytes(“iso-8859-1″,”gb2312″)); 
或者修改tomcat 配置server.xml  加上 URIEncoding=”gb2312”  。 
 | 
  | 
 编码是否与项目编码一致? 
 | 
  | 
 楼主的若是jsp文件,可以这样<%@ page contentType=text/html;charset=gbk”pageEncoding=”utf-8″%> 
你试试看,看能否解决乱码问题 
 | 
  | 
 统一编码  统一编码! 
 | 
  | 
 如果容器是tomcat,配置下它的配置文件/conf/server.xml修改下 
    <Connector port=”8080″ protocol=”HTTP/1.1″ 
               connectionTimeout=”20000″ 
               redirectPort=”8443″/> 
   
<Connector port=”8080″ protocol=”HTTP/1.1″ 
               connectionTimeout=”20000″ 
               redirectPort=”8443″ URIEncoding=”UTF-8″/> 
规定容器的uri编码试试 
 | 
  | 
就这个。您是不是,用的ajax中间传值啊。如是这样的话 。你所写的那两个 控制不住ajax的编码。。用这个  
 | 
  | 
 修改服务器的xml,  URIEncoding, 跟项目编码一致 
 | 
  | 
 在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>这个过滤器正对post方法 get方法不会进行过滤。这样所有的页面post请求都会被过滤。不用每次请求都去写一个编码转换。 
 | 
  | 
还是不行啊朋友  
 | 
  | 
还是乱码…  
 | 
  | 
第一种方法确实可以但是有点麻烦啊  
 | 
  | 
 神马都统一编码才是王道!有时候搞完一个项目都不会出现乱码! 
 | 
  
20分 | 
 1. 一定要编码统一 
2. 是否用的是2.1.6之前的版本 
     I、是。自己手动写一个Filter,在doFilter方法中改变编码,然后调用FilterChain的doFilter方法,然后将Filter配置到web.xml文件中,一定要将它配置到struts2核心控制器的前面,保证在执行struts2核心控制器前先改变编码。 
     II、不是,那么改变常量配置应该就可以了 
 | 
  | 
是啊我用的Struts2.1.6  
 | 
  | 
怎么解决?  
 | 
  | 
数据库,工程,jsp,java文件,tomcat统一设置一种编码,不过一般都是设置的utf-8,如果编写了过滤器还解决不了。那就可能是你的struts2的jar出现了问题。换成2.1.8吧,2.1.6有bug的。 
或者像下面这样做,这是我遇到的情况。 
web.xml: 
<filter> 
  <filter-name>struts2</filter-name> 
  <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class> 
 </filter> 
改成:
 <filter> 
  <filter-name>struts2</filter-name> 
  <filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class> 
 </filter> 
第一种配置是struts2高版本的,如果要使用2.1.6就用下面这个配置。希望能帮到你!  
 | 
  | 
谢谢  
 | 
  | 
说的不错,的确是这样的回事  
 | 
  | 
String fileName = request.getParameter(“fileName”).getBytes(“iso-8859-1″,”gb2312”);为何我这样就一直报错? 
String fileName = request.getParameter(“fileName”).getBytes(“iso-8859-1”);这样也是报错,错误显示不能new String,而是要new Byte[]?大神能教教不?  
 | 
  | 
无码无真相  
 | 
  | 
 new String(oldString.getBytes(oldEncoding),newEncoding) 
 | 
  | 
楼主说的以上两种方式都是针对post请求才有效果。,如果是post, 是不是和页面编码不统一,,如果不是,可以new String(request.getParameter(“”).getBytes(“iso-8859-1″,”gb2312″)); 
或者修改tomcat 配置server.xml  加上 URIEncoding=”gb2312”  。  
String fileName = request.getParameter(“fileName”).getBytes(“iso-8859-1″,”gb2312”);为何我这样就一直报错? 
String fileName = request.getParameter(“fileName”).getBytes(“iso-8859-1”);这样也是报错,错误显示不能new String,而是要new Byte[]?大神能教教不?  
你这个没有加异常处理吧,这个编码方式的转换需要处理异常的  
 | 
  | 
 俩种方式 一种如pengli500所有,但是如果你是eclipse启动的tomcat 需要在eclipse中的servers中的server,xml修改因为他每次会重置tomcat, 第二种就是encodeURI(“str”)加密  后台接收后用 URLDecoder.decode(“str”, “UTF-8”)解密 
 |