关于页面get传递参数,struts2 action接受乱码问题

我在javascript中需要用varURL="<%=path%>/dishNumChart?date="+date+escape("&")+"kname="+kname... 我在javascript中需要用
var URL = "<%=path%>/dishNumChart?date="+date+escape("&")+"kname="+kname; fusionChart.setDataURL(URL);来绘制统计图。所以貌似只能用get方法传输。
从网上找了,servlet.xml中加上URIEncoding="UTF-8或GBK"不行,页面用new String(value.getBytes("ISO-8859-1"),"UTF-8")这个也不行, 用encodeURI进行编码然后解码 也不成功。(注:我的页面编码是UTF-8的,后台编码页面时GBK 的,由于本人粗心,所以整个项目采用的是GBK的格式除了页面,现在寻求大神能够帮忙解决后台接受参数乱码问题)
展开
 我来答
ToDooo
2012-11-01 · TA获得超过1237个赞
知道小有建树答主
回答量:671
采纳率:100%
帮助的人:204万
展开全部
我也 遇到这个问题 你可以试试
一直以为是在这里用ognl表达式取出来的时候就乱码了,后来调了一天,想了想,才发现,这里执行完saveDir的action以后,
转发方式是redirect,那么就相当于是在地址栏重新输入,下面这个action的地址了,然后加上后面的参数。
那么就相当于你自己在地址栏输入listDirByParent.action?child.name=中文。。。,那么这样的请求属于get方式请求,
不会通过过滤器进行过滤,而是通过tomcat进行地址的编码,而tomcat的编码,我记得是iso-8809-1,
那么在action端Struts2默认是utf-8的编码方式,所以编码跟解码的方式出现了不符,就会出现乱码了。
那么解决办法就是,直接在tomcat的server.xml中修改下面这段

<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" URIEncoding="UTF-8" />。

修改完以后,ok了。
lmy_sk521
2012-11-01 · TA获得超过2272个赞
知道小有建树答主
回答量:1330
采纳率:73%
帮助的人:716万
展开全部
你用下面方法试一试
把页面中的内容用post提交给action,在action中生成xml格式的数据,然后放到request 中,返回到jsp页面后,显示统计图
<%
String strXML = (String)request.getAttribute("strXML");
%>
<script type="text/javascript">
var xml = "<%=strXML%>";
var myChart = new FusionCharts("fusioncharts/Charts/Column3D.swf", "mychart", "550","300" );
myChart.setDataXML(xml);
myChart.render("piechart");

</script>
更多追问追答
追问
请问setDataXML()    这个()中传的xml是什么样子的,我在用的ajax回调函数得到了返回的xml是个String类型的 dataType : "json",uccess : function(data) {  c=data.xmlStr;  }   var fusionChart = newFusionCharts(“/page/fusionChart/charts/"+e.target.id+".swf","chartId","600","500"); fusionChart.setDataXML(c); fusionChart.render("middle");
为什么不好用呢
追答
就是把xml文件中的内容做为字符串传到setDataXML()中,
就是你在服务端返回FusionCharts例子中的Data.xml文件中的内容
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友c5d2049
2012-11-01 · TA获得超过972个赞
知道小有建树答主
回答量:438
采纳率:0%
帮助的人:323万
展开全部
使用Spring的过滤器,在web.xml里面配置
<filter>
<filter-name>characterEncodingFilter</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>characterEncodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
追问
这个也不行额。。。我用了字符编码过滤器,struts过滤器,现在加上你的spring的也不好使。。。
追答
function link(arg){

document.getElementById("fom").action="deptTransferAction_load";
document.getElementById("currentPage").value=arg;
document.getElementById("fom").submit();
}
我是这样搞的,就不用GET了,减少很多问题
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
八门
2012-11-01 · TA获得超过313个赞
知道小有建树答主
回答量:323
采纳率:0%
帮助的人:219万
展开全部
你需要做的事 赶快就该项目编码。
其他的按照你自己的方法就能解决了。
否则,后面还会有意想不到的问题。
追问
项目都快完事了。。。我想知道怎样才能把所有的都改为UTF-8的 ,然后还不出现代码乱码问题。
追答

乱码是肯定会出现的。

只能自己一个个用记事本打开 复制粘贴。

以后别范这样的糊涂。

设置一下自己的eclipse吧,这样以后就不用担心项目编码问题。 

看图说话

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2012-11-02
展开全部
那么你统一GBK,要么你统一UTF-8把。 另外GET方式传参数,tomcat也需要设置下相同的编码。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式