Dancie2002
Dancie2002
2008-08-20 17:22

struts2+prototype AJAX POST乱码,怎么解决

已采纳

配置:tomcat 6 server.xml 已经设置Connector的RIEncoding="UTF-8"

web.xml 没 用org.springframework.web.filter.CharacterEncodingFilter,就是关了,在struts2好像没什么用

strutls.xml 设置
JSP是GBK的
JAVA是GBK的
JSP页面form submit中文都是正确的

自己写个ajax

     var pars=Form.Element.serialize($('name'));
     var url="<s:url action="getSuccess"  ></s:url>";

    if($F('name')==""){   
        return;
    }   
    else{   
        var myAjax = new Ajax.Request(   
                url,{method:'get', 
                parameters:pars,
                onLoading:showDiv,   
                asynchronous:  true,
                onComplete:showResponse});
   }  

就是UTF-8发送GET 中文也正确

我把方法改成POST就错误 改成
var pars='name=' + $F('name');
也不对

参数里面加encoding :'gbk' 也不可以

这个ajax的post的时候到底如何才能正确在java得到中文

按照本网的http://goby2008.iteye.com/blog/202796的方法 encodeURI2次或者再次encodeURI
后台URLDecoder.decode(name,"utf-8"); 就能正确得到

问题个人觉得是struts2/xwork2是在那里做了setCharacterEncoding

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享
  • 邀请回答

1条回答

  • sunjhgq sunjhgq 13年前

    建议楼主看看http://www.iteye.com/topic/157698这个。
    ajax的post提交是采用UTF-8来处理的,而且它会经过CharacterEncodingFilter来编码的。
    如果不行你试试在encodeURI(pars),对参数进行编码试试。

    点赞 评论 复制链接分享

相关推荐