< HTML >
< HEAD >
< meta http-equiv =content-type content ="text/html; charset=GB2312" >
< SCRIPT LANGUAGE ="JavaScript" >
var isIE =!! window.ActiveXObject;
if (isIE && document.charset.toLowerCase() != " GB2312" )location.reload( false );
</ SCRIPT >
< TITLE > encode before form post </ TITLE >
< META NAME ="Author" CONTENT ="emu" >
</ HEAD >
< BODY >
< form action ="#" accept-charset ="iso-8859-1" onsubmit ="if(isIE)document.charset='iso-8859-1'" >
< input name ="test" value ="中文" readonly >
< input type =submit >
</ form >
</ BODY >
</ HTML >
?简单的讲,就是在表单发送前告诉IE说当前页面是GB2312编码就行了:?
?<form accept-charset="GB2312" onsubmit="if(isIE)document.charset='GB2312'">?
accept-charset="GB2312" 是写给其他没那么笨的浏览器看的。?
IE为了表现它确实是一傻到底,不但在设置document.charset的时候不会用新的编码解释页面,还会在前进后退(我特地用#作为action来实现后退)的时候又尝试用新的编码去解释页面?
。不过还好,可以用脚本判断出来,还可以用脚本刷新一下页面解决这个问题:?
if(isIE && document.charset!="utf-8")location.reload(false);?