form表单提交get请求,后台接收乱码的解决方案

form表单提交post请求不会出现乱码,但是提交get请求,在servlet中用request.getParameter的时候就会产生乱码。网上盛传的各种办法都不太可行,除了修改服务器的配置。前辈说,不提倡get提交方式,因为依赖服务器配置。试了一下修改服务器配置的方法,不晓得是我理解错误还是什么,没有起作用。

我的解决方法是,在form表单要提交的时候,对输入的值进行编码,然后在后台解码。

$('form[name="search"]').submit(function(){
	var keyWord = $("#q").val();
	$("#q").val(encodeURIComponent(keyWord));
});

这个是jquery的submit方法,不用jquery的话,js应该有onsubmit的方法,跟这个是一样的。

有的情况下需要encodeURIComponent两次,不知道为什么。

后台转码为

//获取关键字
String keyWord = request.getParameter("keyWord");
keyWord = URLDecoder.decode(keyWord, "utf-8");


这个办法的缺点是在点击提交的瞬间,输入框里面的字被转码,而且URL里面显示的也是转码之后的。用户体验不是很好。

----------------------------------解决浏览器后退之后IE中输入框中乱码问题-----------------------------------------------

点击浏览器的后退按钮,输入框中输入的内容就以乱码的内容展示在了用户面前,这样很不好。最好的方法是把乱码解码为汉字,但是目前没有找到方法。另一种不大好的方法是,清空输入框中的内容,这个很简单,只要在html中加入一行代码就OK了。

<meta name="save" content="history">


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值