以下HTML代码会出现一个错误,叫做被解码的URI不是合法的编码,我检查了一下是因为 % 的问题,这样以来功能无法正常使用了,请教大家这个问题怎么解决啊,谢谢了
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>无标题文档</title>
</head>
<script language="javascript">
function test(){
var name=document.getElementById('name').value;
alert(decodeURI(name));
}
</script>
<body onload="test()">
<form>
<input type="hidden" name="name" value="dffs`dfdfg@%$#^&*>sdgsdfg" />
</form>
</body>
</html>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>无标题文档</title>
</head>
<script language="javascript">
function test(){
var name=document.getElementById('name').value;
alert(decodeURI(name));
}
</script>
<body onload="test()">
<form>
<input type="hidden" name="name" value="dffs`dfdfg@%$#^&*>sdgsdfg" />
</form>
</body>
</html>
<input type="hidden" name="name" value="dffs`dfdfg@%$#^&*>sdgsdfg" />改成
<input type="hidden" id="name" value="dffs`dfdfg@%$#^&*>sdgsdfg" />
alert(decodeURI(name));改成
alert(name);
就可以了
我这里是这样使用的,location.href='xxx.jsp?name='dffs`dfdfg@%$#^&*>'
是传参,所以需要编码,谢谢
escape(), encodeURI(), encodeURIComponent()
这三个方法都是把网址中的非ASCII字符转为%XX的形式 三个方法的区别是分别有些字符是不做转义的:
escape() - @*/+
encodeURI() - !@#$&*()=:/;?+'
encodeURIComponent() - !*()'
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>无标题文档</title>
</head>
<script language="javascript">
function test(){
var name=escape(document.getElementById('name').value);
alert(unescape(name));
}
</script>
<body onload="test()">
<form>
<input type="hidden" name="name" value="dffs`dfdfg@%$#^&*>sdgsdfg" />
</form>
</body>
</html>