struts2 用ajax传参的时候是乱码~~~~~~ 别轻易说你能解决!!!!

wangxiaolin528 2012-09-18 09:01:04
用jquery ajax向后台 struts2 的 action 传参的时候,中文乱码,所有的页面和文件都设置的是 utf-8 ,struts的也是:<constant name="struts.i18n.encoding" value="utf-8" /> ,xml文件里还配置了个手写的filter ,能调用到,但是没有用处~~~ tomcat里面也改了 URIEncoding="UTF-8" 所有网上的方法也都试完了,,,,就一直是乱码。而且是 这种类型的:玫瑰喂了猪 我很是蛋疼。。。
希望真有高手来解脱我。。。谢谢。。。分不多,但很真诚。。。
...全文
567 23 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
23 条回复
切换为时间正序
请发表友善的回复…
发表回复
走在四季 2015-06-04
  • 打赏
  • 举报
回复
引用 22 楼 zhangwei900808 的回复:
在ajax的属性添加这句: contentType:'application/x-www-form-urlencoded; charset=utf-8', 是正解,谢谢大侠^_^
var url= ctx+'/user/form-design!convertAll.action';
		var data='id='+id+'&contentParseNew='+"中国";
		$.ajax({
			url:url,
			data:data,
			type:"post",
			contentType:'application/x-www-form-urlencoded; charset=utf-8',
			success:function(msg){
				
			}
		});
没好用。
HttpServletRequest request = Struts2Utils.getRequest();
		String contentParseNew = request.getParameter("contentParseNew");
		try {
			System.out.println("------"+contentParseNew);
			contentParseNew = new String(contentParseNew.getBytes("ISO-8859-1"),"UTF-8");
			System.out.println("======"+contentParseNew);
		} catch (UnsupportedEncodingException e) {
			e.printStackTrace();
		}
两次输入出都是: ------中国 ======中国 encodeURI(encodeURI(contentParseNew)) encodeURIComponent(contentParseNew) 都试了,在action中是没有得到正确中文编码。。
Awbeci 2015-01-16
  • 打赏
  • 举报
回复
在ajax的属性添加这句: contentType:'application/x-www-form-urlencoded; charset=utf-8', 是正解,谢谢大侠^_^
任第一 2012-09-22
  • 打赏
  • 举报
回复
用encodeURIComponent
司文痞子 2012-09-21
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 的回复:]

ajax用post方式,我上次也遇到过。
[/Quote] 对对 我上次也是那样 改为post就行了
zhanglujie2008 2012-09-21
  • 打赏
  • 举报
回复
传参乱码的话,那你转码吧,我以前遇到过。
//得到要搜索的信息并转码
String tsearch = request.getParameter("tsearch");
tsearch = new String(tsearch.trim().getBytes("GBK"),"GBK");
  • 打赏
  • 举报
回复
或者费事的转码或者添加ajax的属性、

jquery在未指定字符集的时候,是使用ISO-8859-1


在ajax的属性添加这句:
contentType:'application/x-www-form-urlencoded; charset=utf-8',




$(function(){
$.ajax({
type:'POST',
url:'xxx.action',
data:{name:"你好"},
contentType:'application/x-www-form-urlencoded; charset=utf-8',
success:function(data){alert(data)}
});
})
elve_elve 2012-09-21
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 的回复:]

encodeURIComponent 用这个把参数包一下 ajax参数位置
[/Quote]

就这个原因...
  • 打赏
  • 举报
回复
用URLEncode编码解码试试呢。
朱超ZhuChao.Tech 2012-09-21
  • 打赏
  • 举报
回复
这种问题太容易了,对汉字进行两次编码 ,用JQUERY的话一次就够了。

WarOfTheKing 2012-09-21
  • 打赏
  • 举报
回复
楼主,你这个问题真是很轻易就能解决了,在<script type="text/javascript">里加上 language="javascript" encoding="utf-8"
威威虎 2012-09-21
  • 打赏
  • 举报
回复
<filter>
<filter-name>encodingFilter</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>encodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
web.xml的servlet前加上过滤器 还不行 是不是数据库编码有问题 乱码大概有7种可能 LZ网上搜一下
  • 打赏
  • 举报
回复
序列化取值就行了
jackson_fighting 2012-09-21
  • 打赏
  • 举报
回复
楼主吓唬人!
syt12322 2012-09-21
  • 打赏
  • 举报
回复
ajax用post ,用get方式,一般都会乱码···
bennu 2012-09-20
  • 打赏
  • 举报
回复
容器的编码设置不正确
SFLDSIMON501055 2012-09-20
  • 打赏
  • 举报
回复
看看 7 楼怎么说。。
mrxie44 2012-09-20
  • 打赏
  • 举报
回复
试试5楼说的
maxpower____ 2012-09-20
  • 打赏
  • 举报
回复
encodeURIComponent 用这个把参数包一下 ajax参数位置
maxpower____ 2012-09-20
  • 打赏
  • 举报
回复
无码无真相
sust2012 2012-09-20
  • 打赏
  • 举报
回复
ajax用post方式,我上次也遇到过。
加载更多回复(2)

81,122

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧