form提交时的字符编码转换之utf-8转gb2312
在跨业务、跨网站发送数据或者业务升级的时候,我们有的时候需要指定发送数据的编码方式,比如页面是utf-8编码的,而发送出去的数据却希望是GB2312编码的。
其实html里面form标签有个accept-charset属性,可以帮助我们解决这个问题,可惜的是傻乎乎的IE浏览器虽然认得accept-charset,却并不卖它的帐。IE的表单提交的时候使用什么编码是完全看页面的charset决定的。还好,IE在charset这个问题上一傻到底,糊弄它一下,它就乖乖听话了:
<HTML> <HEAD> <meta http-equiv=content-type content="text/html; charset=UTF-8"> <SCRIPT LANGUAGE="JavaScript"> var isIE=!!window.ActiveXObject; if(isIE && document.charset!="utf-8")location.reload(false); </SCRIPT> <TITLE>encode before form post</TITLE> <META NAME="Author" CONTENT="emu"> </HEAD> <BODY> <form action="#" accept-charset="GB2312" onsubmit="if(isIE)document.charset='GB2312'"> <input name="test" value="我" readonly> <input type=submit> </form> </BODY> </HTML>