[转载]form提交页设置编码类型,使其数据无乱码

来源:互联网 发布:有点牛网络公司 知乎 编辑:程序博客网 时间:2024/06/05 10:05

这确实是个很好的办法。

 accept-charset 一个很少用到的表单属性,利用它实现在不同编码的页面里实现表单的提交也是一种很方便的解决方法。转自老王的baidu空间,记录在此。

问题背景:

两个应用编码不同,一个是GBK编码,另一个是UTF-8编码。现在要在GBK编码的应用里使用表单向UTF-8编码的应用里提交数据,很显然,如果不做特殊处理的话,会出现乱码。 

解决方案:

当然了,可以自己使用ICONV或者MB扩展来转换编码,但这不是我们要的。 
在W3里介绍了一个不太常见的属性: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> 

剩下的工作浏览器会搞定。