request.getParameter获取中文是乱码

J2EE 码拜 10年前 (2015-04-05) 1455次浏览 0个评论
 

不管是在Struts配置文件中设置<constant name=”struts.i18n.encoding” value=”gb2312″ />或者在Action方法里面设置request.setCharacterEncoding(“gb2312”); 都没用!request是实现了ServletRequestAware

request.getParameter获取中文是乱码
楼主说的以上两种方式都是针对post请求才有效果。,如果是post, 是不是和页面编码不统一,,如果不是,可以new String(request.getParameter(“”).getBytes(“iso-8859-1″,”gb2312″));
或者修改tomcat 配置server.xml  加上 URIEncoding=”gb2312”  。
request.getParameter获取中文是乱码
编码是否与项目编码一致?
request.getParameter获取中文是乱码
楼主的若是jsp文件,可以这样<%@ page contentType=text/html;charset=gbk”pageEncoding=”utf-8″%>
你试试看,看能否解决乱码问题
request.getParameter获取中文是乱码
统一编码  统一编码!
request.getParameter获取中文是乱码
如果容器是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编码试试
request.getParameter获取中文是乱码
引用 1 楼 ch656409110 的回复:

楼主说的以上两种方式都是针对post请求才有效果。,如果是post, 是不是和页面编码不统一,,如果不是,可以new String(request.getParameter(“”).getBytes(“iso-8859-1″,”gb2312″));
或者修改tomcat 配置server.xml  加上 URIEncoding=”gb2312”  。

就这个。您是不是,用的ajax中间传值啊。如是这样的话 。你所写的那两个 控制不住ajax的编码。。用这个

request.getParameter获取中文是乱码
修改服务器的xml,  URIEncoding, 跟项目编码一致
request.getParameter获取中文是乱码
在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请求都会被过滤。不用每次请求都去写一个编码转换。
request.getParameter获取中文是乱码
引用 8 楼 chenshengqqq 的回复:

在web.xml中启动过滤器<filter><filter-name>encodingFilter</filter-name><filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class><init-param><param-name>encoding</param-n……

还是不行啊朋友

request.getParameter获取中文是乱码
引用 5 楼 zoulr 的回复:

如果容器是tomcat,配置下它的配置文件/conf/server.xml修改下
    <Connector port=”8080″ protocol=”HTTP/1.1″
               connectionTimeout=”20000″
               redirectPort=”8443″/>
  
<Connector po……

还是乱码…

request.getParameter获取中文是乱码
引用 1 楼 ch656409110 的回复:

楼主说的以上两种方式都是针对post请求才有效果。,如果是post, 是不是和页面编码不统一,,如果不是,可以new String(request.getParameter(“”).getBytes(“iso-8859-1″,”gb2312″));
或者修改tomcat 配置server.xml  加上 URIEncoding=”gb2312”  。

第一种方法确实可以但是有点麻烦啊

request.getParameter获取中文是乱码
神马都统一编码才是王道!有时候搞完一个项目都不会出现乱码!
request.getParameter获取中文是乱码
20分
1. 一定要编码统一
2. 是否用的是2.1.6之前的版本
     I、是。自己手动写一个Filter,在doFilter方法中改变编码,然后调用FilterChain的doFilter方法,然后将Filter配置到web.xml文件中,一定要将它配置到struts2核心控制器的前面,保证在执行struts2核心控制器前先改变编码。
     II、不是,那么改变常量配置应该就可以了
request.getParameter获取中文是乱码
引用 13 楼 GaoXin_ 的回复:

1. 一定要编码统一
2. 是否用的是2.1.6之前的版本
     I、是。自己手动写一个Filter,在doFilter方法中改变编码,然后调用FilterChain的doFilter方法,然后将Filter配置到web.xml文件中,一定要将它配置到struts2核心控制器的前面,保证在执行struts2核心控制器前先改变编码。
     II、不是,那么改变……

是啊我用的Struts2.1.6

request.getParameter获取中文是乱码
引用 12 楼 cuihuaming198809 的回复:

神马都统一编码才是王道!有时候搞完一个项目都不会出现乱码!

怎么解决?

request.getParameter获取中文是乱码
数据库,工程,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就用下面这个配置。希望能帮到你!

request.getParameter获取中文是乱码
引用 16 楼 cuihuaming198809 的回复:

数据库,工程,jsp,java文件,tomcat统一设置一种编码,不过一般都是设置的utf-8,如果编写了过滤器还解决不了。那就可能是你的struts2的jar出现了问题。换成2.1.8吧,2.1.6有bug的。
或者像下面这样做,这是我遇到的情况。
web.xml:
<filter>
  <filter-name>struts2</filter-name>
 ……

谢谢

request.getParameter获取中文是乱码
引用 1 楼 ch656409110 的回复:

楼主说的以上两种方式都是针对post请求才有效果。,如果是post, 是不是和页面编码不统一,,如果不是,可以new String(request.getParameter(“”).getBytes(“iso-8859-1″,”gb2312″));
或者修改tomcat 配置server.xml  加上 URIEncoding=”gb2312”  。

说的不错,的确是这样的回事

request.getParameter获取中文是乱码
引用 1 楼 ch656409110 的回复:

楼主说的以上两种方式都是针对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[]?大神能教教不?

request.getParameter获取中文是乱码
引用 19 楼 qq_19566713 的回复:
Quote: 引用 1 楼 ch656409110 的回复:

楼主说的以上两种方式都是针对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[]?大神能教教不?

无码无真相

request.getParameter获取中文是乱码
new String(oldString.getBytes(oldEncoding),newEncoding)
request.getParameter获取中文是乱码
引用 19 楼 qq_19566713 的回复:
Quote: 引用 1 楼 ch656409110 的回复:

楼主说的以上两种方式都是针对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[]?大神能教教不?

你这个没有加异常处理吧,这个编码方式的转换需要处理异常的

request.getParameter获取中文是乱码
俩种方式 一种如pengli500所有,但是如果你是eclipse启动的tomcat 需要在eclipse中的servers中的server,xml修改因为他每次会重置tomcat, 第二种就是encodeURI(“str”)加密  后台接收后用 URLDecoder.decode(“str”, “UTF-8”)解密

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明request.getParameter获取中文是乱码
喜欢 (0)
[1034331897@qq.com]
分享 (0)

文章评论已关闭!