URL传参到servlet含特殊字符——#号无法传递
特殊字符有:[~’!@#$%^&*()-+_=:]
于是,想到办法先转换为16进制数,然后再传递,以下是javascript的转换方式:
//替换特殊符号
function replaceScript(s)
{
var aStr = new Array(); //定义一个数组
aStr = s.split(""); //将传入的字符串切割成字符串数组
var pattern = new RegExp("[~'!@#$%^&*()-+_=:]","g"); //将要匹配的特殊字符
var result = ""; //定义一个空字符串,作为返回值
for (var i = 0; i < s.length; i++) {
if(pattern.test(s[i])) //RegExp.test()检索字符串中指定的值。返回 true 或 false。
{
s[i]=s[i].toString(16); //将特殊字符转换成16进制数
};
result+=s[i];
}
return result;
}
另外,值得注意的是:对于#号并不起作用。
原因是在https://blog.csdn.net/u014426752/article/details/41733967看到的。