说到乱码问题,要用到JavaScript unescape() 函数;他的具体用法如下:
定义和用法 unescape() 函数可对通过 escape() 编码的字符串进行解码。
语法
unescape(string)
参数 | 描述 |
string | 必需。要解码或反转义的字符串。 |
返回值
string 被解码后的一个副本。
说明
该函数的工作原理是这样的:通过找到形式为 %xx 和 %uxxxx 的字符序列(x 表示十六进制的数字),用 Unicode 字符 /u00xx 和 /uxxxx 替换这样的字符序列进行解码。
提示和注释
注释:ECMAScript v3 已从标准中删除了 unescape() 函数,并反对使用它,因此应该用 decodeURI() 和 decodeURIComponent() 取而代之。
实例
在本例中,我们将使用 escape() 来编码字符串,然后使用 unescape() 对其解码:
<script type="text/javascript">var test1="Visit W3School!"test1=escape(test1)document.write (test1 + "<br />")test1=unescape(test1)document.write(test1 + "<br />")</script>输出:
Visit%20W3School%21Visit W3School!
具体的例子如下:
请求的html页面(send.html)
<script type="text/javascript">
function sub(){
var froms = document.getElementById("form1");
var flag=document.getElementById("ceshi").value;
froms.action="ceshiAction.action?ceshi=escape("+flag+")",
froms.submit();
}
</script>
<body>
<form action="" name="form1" id="form1" method="post" >
参数: <input type="text" id="ceshi" name="ceshi" value=""/>
<input type="submit" value="提交" οnclick="sub()"/>
</form>
</body>
接受参数的静态页面(jieshou.html):
<script>
function getparastr(strname)
{
var hrefstr,pos,parastr,para,tempstr;
hrefstr = window.location.href;
var leng=hrefstr.length;
var array = hrefstr.split("=");
for(i=0;i<=array.length;i++)
{
document.write(array[i+1].substr(7,array[i+1].length-8)+" ");
if(i==array.length-2){
break;
}
}
return unescape(hrefstr).substr(61,leng-63);
}
// 获取program参数
var programstr = getparastr("program");
document.write();
</script>
</body>