不管是在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”)解密
|