一、用例场景
之前中文搜索基于xmlHttp,中文入参没有任何问题,因最近搜索基于solr的搜索引擎,之前xmlHttp方式会报中文乱码问题,因此改为Ajax方式,对于中文入参使用encodeURI进行转为伪码显示,然后在后台通过java的URLDecoder.decode进行解密,从而解决乱码问题
二、代码示例
1. 前端脚本代码,Jquery库完整版本下载,请跳转到下载页
<html>@b@<body>@b@<input type="text" id="skey" value="输入关键词"/>@b@<button onclick="getData()">search</button>@b@</body>@b@</html>@b@<script>@b@function getData(){@b@ var skey=document.getElementById('skey').value; @b@ $.ajax({@b@ type: "GET",@b@ url: 'http://www.xwood.net/search/',@b@ dataType: 'JSON',@b@ data:{'q':encodeURI(encodeURI(str))},//加密转码@b@ error: function(){@b@ alert(e);@b@ }, @b@ success: function(result)@b@ {@b@ alert(result);@b@ } @b@ })@b@}@b@</script>
2. 后台代码,使用java.net.URLDecoder的工具类进行解码中文,如下所示
String q=req.getParameter("q");@b@q=URLDecoder.decode(URLDecoder.decode(q),"utf-8");//解码中文