乱码原因:
在传参的过程中,由于参数的编码(如UTF-8、GBK等)不确定,以至于我们在后台接参的时候不知道要接受的参数是哪种编码格式,从而出现后台接收的参数出现乱码。
解决办法:
在前端传参的时候先将参数进行编码,统一将多字节的参数转为Ascii字符串,然后由后台进行解码并指定你需要的编码,这样就能得到你想要的不乱码的参数了。
示例:
前端:
var str = encodeURI(encodeURI("我不想乱码")); //转码过后的中文参数
var url = "/vehicleinfoAction!verifyPassed.action?str="+str; //上面参数传入后台
后台:
String str=request.getParameter("str");
str= java.net.URLDecoder.decode(str,"UTF-8"); //这句话一定要,因为如果不写的,将会得到一个乱码的参数,这一定不是你想看到的。
注:这里前端出现了两次转码,解释一下,因为将参数传入后台的时候我们的服务器tomcat会自动进行一次解码,而我们在后台接参的时候会手动解码一次,所以前端会进行两次转码。