1、html向后台传参中文乱码问题的解决办法
在我们通过ajax或者url直接向后台传参出现参数被转义成乱码时,后台解决办法如下示例:
通过后台识别当前浏览器,对参数进行编码转义
String agent = request.getHeader("user-agent");
if(fileName.equals(new String(fileName.getBytes("ISO-8859-1"),"ISO-8859-1"))){
//ie10,11 参数乱码 fileName为会出现乱码的参数
// fileName = StringUtil.convertToCorrectEncoding(fileName);
// if(agent.contains("MSIE") || agent.contains("rv")){
// fileName = new String(fileName.getBytes("UTF-8"),"GB2312");
// }else{
fileName = new String(fileName.getBytes("ISO-8859-1"),"UTF-8");
// }
}
if(!StringUtils.isEmpty(folder)){
if(folder.equals(new String(folder.getBytes("ISO-8859-1"),"ISO-8859-1"))){
folder = StringUtil.convertToCorrectEncoding(folder);
}
}
2、前台解决办法如下示例:
①、可以使用encodeURI编码,decodeURI解码
var uri=encodeURI("index.html?index="+uri); //使用encodeURI编码,转义乱码
然后在接收页面使用decodeURI解码
var uri=decodeURI(uri[1]); //使用decodeURI对上面编码的参数进行解码
②、通过encodeURIComponent编码、decodeURIComponent解码等方式编码解码
encodeURIComponent、decodeURIComponent的使用方法和①中的使用方法一直,不过其编码解码的范围相较于①中的方法较大,包括保留字符、#和其他字符。
其中一个rul可能包括的字符有:保留字符、非转义字符、#、其他字符、被转义字符等。