提交表单到不同字符集页面的方法

利用<form>标签的“accept-charset”属性,在不同编码的页面间提交表单。accept-charset属性介绍accept-charset属性规定服务器处理表单数据所接受的字符集,允许您指定一系列字符集,服务
利用<form>标签的“accept-charset”属性,在不同编码的页面间提交表单。

        accept-charset 属性介绍

accept-charset 属性规定服务器处理表单数据所接受的字符集,允许您指定一系列字符集,服务器必须支持这些字符集,从而得以正确解释表单中的数据。该属性的值是用引号包含字符集名称列表。如果可接受字符集与用户所使用的字符即不相匹配的话,浏览器可以选择忽略表单或是将该表单区别对待。此属性的默认值是 "unknown",表示表单的字符集与包含表单的文档的字符集相同。除了 Internet Explorer,accept-charset 属性得到几乎所有浏览器的支持。

问题背景:

两个应用编码不同,一个是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" οnsubmit="document.charset='utf-8';">

...

</form>

 

再比如我们一个utf-8页面向一个GB2312的页面提交表单,我们可以在utf-8的页面中修改form的属性

<form method="post" action="..." accept-charset="GB2312" οnsubmit="document.charset='GB2312';">

...

</form>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值