定人困扰的 struts2.1.6 中文乱码问题

问题描述

前台jsp表单提交中文参数过去,在action中调试时总是接收到乱码表单使用的是post提交方式jsp页面设置<%@pagelanguage="java"contentType="text/html;charset=utf-8"pageEncoding="utf-8"%>struts.xml也设置了<constantname="struts.i18n.encoding"value="UTF-8"/>自己还写了一个拦截器publicclassCharEncodinInterceptorextendsAbstractInterceptor{@OverridepublicStringintercept(ActionInvocationinvocation)throwsException{HttpServletRequestrequest=ServletActionContext.getRequest();request.setCharacterEncoding("UTF-8");returninvocation.invoke();}}并且已经成功引用该拦截器此外tomcat页设置了URIEncoding="UTF-8"但是action中接收中文时还是乱码

解决方案

解决方案二:
将拦截器去掉,试试看
解决方案三:
<constantname="struts.i18n.encoding"value="GBK"/>
解决方案四:
你是从哪里取数据?数据库吗,那你要看看你数据库里面的资料是否本身就是乱码,
解决方案五:
换个继承的类在源文件修改的那个是get的方式提交可以改变,用下面的这个是拦截post的提交方式,这是经常用到的,包你解决问题publicclassMyFilterextendsRequestProcessor{@OverrideprotectedbooleanprocessPreprocess(HttpServletRequestrequest,HttpServletResponseresponse){try{request.setCharacterEncoding("utf-8");}catch(UnsupportedEncodingExceptione){//TODOAuto-generatedcatchblocke.printStackTrace();}returntrue;}}
解决方案六:
还有关键的一句,在struts-xml文件里面配置<controllerprocessorClass="com.strutsdatasource.filter.MyFilter"></controller>这样你的问题就可以解决
解决方案七:
struts2.1.6这个版本就没试过了,是释放版吗?
解决方案八:
<constantname="struts.i18n.encoding"value="GBK"/>
解决方案九:
<constantname="struts.i18n.encoding"value="GBK"/>
解决方案十:
在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>GBK</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><filter-name>struts-cleanup</filter-name><filter-class>org.apache.struts2.dispatcher.ActionContextCleanUp</filter-class></filter><filter-mapping><filter-name>struts-cleanup</filter-name><url-pattern>/*</url-pattern></filter-mapping>
解决方案十一:
这是struts2.1.6的bug,你可以在web.xml中将filter配置换成struts2.0的试一下.
解决方案十二:
struts-xml文件里面配置<constantname="struts.i18n.encoding"value="GBK"/>
解决方案十三:
struts2.1.6版本中存在一个Bug,即接收到的中文请求参数为乱码(以post方式提交),原因是struts2.1.6在获取并使用了请求参数后才调用HttpServletRequest的setCharacterEncoding()方法进行编码设置,导致应用使用的就是乱码请求参数。这个bug在struts2.1.8中已经被解决,如果你使用的是struts2.1.6,要解决这个问题,你可以这样做:新建一个Filter,把这个Filter放置在Struts2的Filter之前,然后在doFilter()方法里添加以下代码publicvoiddoFilter(...){HttpServletRequestreq=(HttpServletRequest)request;req.setCharacterEncoding("UTF-8");//应根据你使用的编码替换UTF-8filterchain.doFilter(request,response);}
解决方案十四:

解决方案十五:
上面一个老兄说的process就可以啦,这个是在提交给action之前,actionfrom做的一个转码动作一定行,我试过

时间: 2024-07-29 03:41:47

定人困扰的 struts2.1.6 中文乱码问题的相关文章

struts2 jsp表单提交到action中文乱码问题

struts2 jsp教程表单提交到action中文乱码问题 struts2中默认提交的格式是utf-8格式的,故需要把中文字符转码后才能正常显示,解决方法: 直接在struts.xml文件中<struts> 标签内部添加一句如下代码:  <constant name="struts.i18n.encoding" value="gbk" /> 注意:如果你jsp页面中使用的是utf-8格式,那么此处也写成utf-8格式. 下面看代码 下面是一

Struts从零开始二、解决中文乱码的问题实例

在进行web应用程序开发的过程中,中文问题经常困扰着很多程序员.因此,在接下来的两个课程的学习中,我将根据实践经验来谈一下web应用中的中文问题的解决方法.让大家不再为此而头痛. 我们就前那个登录验证的例子,进行进阶,处理中文乱码问题.前面例子中,只要用户名和密码都是123,才返回成功的页面.为了处理中文,我们判断只有用户名是张三才登陆成功. 一.程序进阶: 既然是中文乱码处理,页面的用户输入就是中文了,相应的action的if处理也要变成: if (username.equals("张三&qu

开发过程遇到的中文乱码问题如何解决

1.数据库编码不一致导致乱码 解决方法: 首先查看数据库编码,输入: show variables like "%char%";  确认编码一致,如果不一致,可输入: SET character_set_client='utf8';  SET character_set_connection='utf8';  SET character_set_results='utf8';  也可设置成gbk编码; 也可以在安装Mysql目录下修改my.ini文件 default-character

mysql 中文乱码 解决方法集锦_Mysql

第一个方法: MySQL 4.1 中文乱码的问题 最近要将 MySQL 4.0 升级到 MySQL 4.1 ,发现了中文乱码的问题,希望以下见解对大家有用. 1. MySQL 4.1 在文字上有很大改进,它有了 Character Set 与 Collation 的慨念. 2. 在 MySQL 4.0 ,一般的程式都会将文字以拉丁文 ( latin) 来储存,就算我们输入中文字,结果仍是放在以拉丁文设置的文字栏里头,这对 MySQL 4.0 与以 MySQL 4.0 为基楚的程式来说,并不会有问

phpmyadmin显示utf8_general_ci中文乱码的问题终级篇_php技巧

自己写PHP也有一年多了,然后编码问题却老是没有得到好的解决,自己的情况是这样的, 网页显示完全正常,在phpmyadmin数据库显示中文乱码,不管是简体还是繁体,只要是中文都是如下显示形式:梧州æ--游 然而自己编写的网页中却显示完全正常,不管是繁体,还是简体,都不会乱码情况. 当然我的网页是保存为utf-8格式的,再加上我读库操作时加上了mysql_query("set names 'utf-8'");的语句,所以在网页中看到的是完全正常,当然只有在phpmyadmin

奇怪的中文乱码问题

问题描述 不知道是不是struts2的原因 应该关系不大首先,提交的中文不是全部都乱码,只是乱码其中的一部分比如:提交一个姓名:陈玥颖在后台得到这个姓名时是:陈?颖其他某些中文字符也是这样,显示一个问号,但是有些中文字符又是正常的,感觉就像是这个字符不识别.....奇怪的问题.....请教大侠 解决方案 gb2312编码是简化的,有的汉字不支持,这个改编码吧,用utf-8或者gbk都可以.System.out.println(new String("陈玥颖 ".getBytes(&qu

关于Mysql中文乱码问题该如何解决(乱码问题完美解决方案)_Mysql

最近两天做项目总是被乱码问题困扰着,这不刚把mysql中文乱码问题解决了,下面小编把我的解决方案分享给大家,供大家参考,也方便以后自己查阅. 首先: 用show variables like "%colla%":show varables like "%char%":这两条命令查看数据库与服务端的字符集设置 如果查看出来都是gbk2312,或 gbk,那么就只能支持简体中文,繁体和一些特殊符号是不能插入的,我们只有修改字符集为UTF-8, 修改方法如下: 用记事本或

彻底解决Spring MVC中文乱码问题的方案_java

乱码是让人很头疼的一件事,本文介绍了彻底解决Spring MVC中文乱码问题的方案,具体如下:  1:表单提交controller获得中文参数后乱码解决方案 注意:  jsp页面编码设置为UTF-8 form表单提交方式为必须为post,get方式下面spring编码过滤器不起效果 <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <form

Oracle字符集的简单图解,中文乱码解决

Oracle字符集的简单图解,中文乱码解决 经常碰到SQLPLUS展现乱码的问题,字符集和相关的定义都有说明但是很少有能把这些关系说的很简单易懂的. 在此之前我们需要搞清楚三个概念,操作系统字符集,客户端字符集,Oracle字符集: 操作系统字符集:对应的参数是LANG,这个参数应该是Oracle数据库的超集,如果操作系统不支持,那么我们的数据就会乱码.这里的操作系统指的是客户端的操作系统.服务器端的操作系统不会影响数据的存取. 数据库字符集:NLS_CHARACTERSET,可以在nls_da