首先escape(String)采用ISO Latin字符集对指定的字符串进行编码。所有的空格符、标点符号、特殊字符以及其他非ASCII字符都将被转化成%xx格式的字符编码(xx等于该字符在字符集表里面的编码的16进制数字)。
所以第一可以尝试去掉escape()方法,用encodeURI(encodeURI(String))对你要进行传递的参数进行转码,然后在Servlet接受的时候用java.net.URLDecoder.decode(String,"UTF-8") 即可。
For example:
var url = "UpdateContractServlet?contractId="+ escape(contractId); //此处传递一个参数
System.out.println(request.getParameter("contractId")); //此处取值会出现中文乱码形如???
需作如下修改:
var url = "UpdateContractServlet?contractId="+ encodeURI(encodeURI(contractId));
或者
var url = "UpdateContractServlet?contractId="+ contractId;
url = encodeURI(encodeURI(url));
System.out.println(java.net.URLDecoder.decode(request.getParameter("contractId"),"UTF-8") );