riali 发表于 2013-1-23 02:44:32

在IE下面指定表单编码方式

<div class="postText">在跨业务、跨网站发送数据或者业务升级的时候,我们有的时候需要指定发送数据的编码方式,比如页面是utf-8编码的,而发送出去的数据却希望是GB2312编码的。在做Ajax开发的时候,我们往往都是用vbscript或者用查字典法来解决这个问题(http://www.blogjava.net/emu/articles/31756.html)。但是有些业务,也许并不需要做成Ajax这么复杂,用表单提交显得更加自然。

其实html里面form标签有个accept-charset属性,可以帮助我们解决这个问题,可惜的是傻乎乎的IE浏览器虽然认得accept-charset,却并不卖它的帐。IE的表单提交的时候使用什么编码是完全看页面的charset决定的。还好,IE在charset这个问题上一傻到底(见http://www.blogjava.net/emu/archive/2007/08/21/138247.html),糊弄它一下,它就乖乖听话了:
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee;"><HTML>
<HEAD>
<metahttp-equiv=content-typecontent="text/html;charset=UTF-8">
<SCRIPTLANGUAGE="JavaScript">
varisIE=!!window.ActiveXObject;
if(isIE&&document.charset!="utf-8")location.reload(false);
if(location.search)alert("“我”字编码为:"+location.search.substr(6))
</SCRIPT>
<TITLE>encodebeforeformpost</TITLE>
<METANAME="Author"CONTENT="emu">
</HEAD>
<BODY>
<formaction="#"accept-charset="GB2312"onsubmit="if(isIE)document.charset='GB2312'">
<inputname="test"value="我"readonly>
<inputtype=submit>
</form>
</BODY>
</HTML>
页: [1]
查看完整版本: 在IE下面指定表单编码方式