URL/ajax带中文参数,后台获取乱码

URL带中文参数,后台获取乱码

情况:做分页时,需要带中文参数跳转页面,代码放本地测试没问题,可放到服务器上,点击下一页时就会出现空白,中文参数变成乱码


原因:为防止乱码,本地更改了tomcat\conf\server.xml文件,指定浏览器的编码格式为“简体中文”,可是服务器上并没有更改,所以造成本地没事,放到服务器上就会出现乱码。

解决方式
第一种: 更改服务器上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"/>
第二种: 对URL进行转码,后台解码
jsp页面:
<a id="pageUrl" href="jumpPage.action?name=${pro.name}">跳转页面</a>
<script type="text/javascript">
    $("pageUrl").click(function(){
        var url = $("#pageUrl").attr("href");
        url = encodeURI(encodeURI(url)); -- 转码两次
        $("#pageUrl").attr("href",url);
    });
</script>

controller页面:
String name = request.getParameter("name"); -- 系统自带转码一次
name = java.net.URLDecode.decode(name, "utf-8"); -- 手动转码一次

用ajax时,中文参数乱码

解决方法
汉字在前台提交前用encodeURIComponent()函数编一下码,在后台用java.net.URLDecoder.decode(str,"utf-8")解码。 -- 适合字段少时
eg:
前台
var name = $("[name='name']").val();
name = encodeURIComponent(name);

后台
String name = request.getParameter("name");
name = java.net.URLDecoder.decode(name,"utf-8");


encodeURI()与encodeURIComponent()区别
我的理解是,encodeURI()是对整个URL编码,encodeURIComponent()是对URL的部分内容编码,范围不同。
http://www.cnblogs.com/shuiyi/p/5277233.html
http://www.cnblogs.com/tylerdonet/p/3483836.html
  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值