以下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>

解决方案 »

  1.   


    <input type="hidden" name="name" value="dffs`dfdfg@%$#^&*>sdgsdfg" />改成
    <input type="hidden" id="name" value="dffs`dfdfg@%$#^&*>sdgsdfg" />
    alert(decodeURI(name));改成
    alert(name);
    就可以了
      

  2.   

    要晒先什么功能?是要对任意字符decodeURI? 一般是对encodeURI后的地址decodeURI.  
      

  3.   


    我这里是这样使用的,location.href='xxx.jsp?name='dffs`dfdfg@%$#^&*>'
    是传参,所以需要编码,谢谢
      

  4.   

    方法换换
    escape(), encodeURI(), encodeURIComponent() 
    这三个方法都是把网址中的非ASCII字符转为%XX的形式 三个方法的区别是分别有些字符是不做转义的: 
    escape()              - @*/+ 
    encodeURI()          - !@#$&*()=:/;?+' 
    encodeURIComponent()  - !*()'
      

  5.   

    如果是为了传递参数的话,用encodeURIComponent对参数进行编码location.href='xxx.jsp?name=' + encodeURIComponent("'dffs`dfdfg@%$#^&*>");
      

  6.   

    <!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=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>
      

  7.   

    这个问题我碰到过 是%导致的 decodeURI解码前先用encodeURI编码一次再解码就可以了