1. 背景
一般不建议从前台往后端传递中文参数,但是有些时候这件事是难免的,比如网页中按关键字搜索时。
传递中文参数往往会遇到乱码问题,此处给出后端为Java时的示例代码。
2. 前端编码
为防止中文参数乱码,可以在传递前对参数进行编码,如下:
var keyword=$("#input-keyword").val();//获取输入框的值
var encodedKeyword=encodeURIComponent(keyword);//实现编码
3. 参数传递
通过ajax将参数传递到后端,示例如下:
$.ajax({
timeout:20000,
type:"POST",
dataType:"JSON",
url:"/search.do",
data:encodedKeyword,
success:function(msg){
console.log(msg);
}
});
4. 后端解码
String encodedKeyword=req.getParameter("encodedKeyword");//此处Servlet会自动解码一次,默认是以ISO-8859-1进行解码
try {
String keyword= URLDecoder.decode(encodedKeyword , "UTF-8");//此处按UTF-8进行解码
} catch (UnsupportedEncodingException e) {
e.printStackTrace();