从2.html的一个表单提交到3.html,get方法,希望在3里面能拿到中文
2.html:
<html>
<head>
</head>
<body>
<form name="form1" action="3.html" method="get" target="_blank">
<input name="abc"></form>
<input type="button" value="测试" onClick="fun()">
</body>
</html>
<script>
function fun(){
 var a = document.getElementById("abc").value;
 document.getElementById("abc").value = escape(a);
 document.form1.submit();
 //window.open("3.html?abc=" + escape('飞'));
}
</script>3.html:
<HTML>
<head>
</head>
<SCRIPT>
function fun(){
var a = document.location.search;
alert(unescape(a));
}
</SCRIPT>
<body>
<input name="abc">
<input type="button" value="测试" onClick="fun()">
</body>
</HTML>1,如果2里面用window.open方法也就是我注释掉的那句,传递给3的话就可以转码拿到中文,表单提交和open方法是不是内部的默认编码不一样。
2,用get方法时如何设置转码解码,我在3里面可以拿到中文
3,就算不用get换成post我如何获取中文。
以上不涉及任何服务器端程序,与jsp无关,没有request,没有session.纯静态的2个html页面。只考虑在表单提交的方式下如何做。
高手帮忙,谢谢。

解决方案 »

  1.   

    关于转换……
    escape() 方法:
    采用ISO Latin字符集对指定的字符串进行编码。所有的空格符、标点符号、特殊字符以及其他非ASCII字符都将被转化成%xx格式的字符编码(xx等于该字符在字符集表里面的编码的16进制数字)。比如,空格符对应的编码是%20。
    不会被此方法编码的字符: @ * / +encodeURI() 方法:
    把URI字符串采用UTF-8编码格式转化成escape格式的字符串。
    不会被此方法编码的字符:! @ # $& * ( ) = : / ; ? + '
    encodeURIComponent() 方法:
    把URI字符串采用UTF-8编码格式转化成 escape格式的字符串。与encodeURI()相比,这个方法将对更多的字符进行编码,比如 / 等字符。所以如果字符串里面包含了URI的几个部分的话,不能用这个方法来进行编码,否则 / 字符被编码之后URL将显示错误。
    不会被此方法编码的字符:! * ( ) '因此,对于中文字符串来说,如果不希望把字符串编码格式转化成UTF-8格式的(比如原页面和目标页面的charset是一致的时候),只需要使用escape。如果你的页面是GB2312或者其他的编码,而接受参数的页面是UTF-8编码的,就要采用encodeURI或者encodeURIComponent。另外,encodeURI/encodeURIComponent是在javascript1.5之后引进的,escape则在javascript1.0版本就有。
      

  2.   

    在3.html
     中用parent.from1.abc.value
    得到不可以吗
      

  3.   

    回2楼的target="_blank"是我测试时加上忘删了,真实环境下很有可能父页面已经关闭了。
      

  4.   

    用flash做吧,二个页面传值,没有比flash 更好的了,每个HTML页放一个swf文件就行了,
    那个swf,自已去flash 3.0组件手册看下,AS语法(除了类)和JS几乎一样的
    ExternalInterface //JS AS通信
    LocalConnetion  //.swf通信