我们在UTF-8、GB2312、GBk不同编码页面进行表单提交时,如果不做特殊处理,经常会出现乱码问题。这种情况往往需要编码,但是有些情不得已我们可能无法控制接收方或者发送方的编码问题,现在介绍一个最方便的解决的方案。
解决方案:
在W3C里介绍了一个 form 不太常见的属性:accept-charset,用它可以完成我们的需求。
在GBK编码的页面里编写如下代码:
<form method="post" action="..." accept-charset="utf-8"> ... </form>
如此的代码在Firefox等正常的浏览器下没有任何问题,但是遇到IE这个浏览器就不灵了,现在我们还得Hack一下:
<form method="post" action="..." accept-charset="utf-8" onsubmit="document.charset='utf-8';"> ... </form>
剩下的工作交给浏览器搞定了。
同理UTF-8编码页面提交到GB2312表单,把上面的utf-8 改成gb2312就可以了。