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

来源:互联网 发布:drgs分组器软件 编辑:程序博客网 时间:2024/06/11 19:36

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">


原创粉丝点击