百度空间 | 百度首页 
               
 
查看文章
 
在不同编码的页面间提交表单
2008年09月10日 星期三 下午 06:54
作者:老王

问题背景:

两个应用编码不同,一个是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>

后话:IE还有很多Bug修复手段,详见链接

类别:默认分类 | 添加到搜藏 | 浏览() | 评论 (6)
 
网友评论:
1
2008年09月10日 星期三 下午 09:01 | 回复
兼容吗?
 
2
2008年09月11日 星期四 上午 01:26 | 回复
这个属性可真是冷僻啊。
 
3
2008年09月11日 星期四 上午 07:21 | 回复
这一招还真是冷啊,有机会要试试。
 
4
2008年09月12日 星期五 下午 06:46 | 回复
的确没见过
 
5
2008年09月16日 星期二 下午 02:44 | 回复
没遇到过这种问题 一般编码都是统一的 很少不一致
 
6
2008年09月27日 星期六 下午 11:53 | 回复
确实蛮冷的 n年前我被这个问题折腾的够呛 n年后看到你这篇帖子 忍不住泪下沾衣襟....
 
发表评论:
姓 名:
网址或邮箱: (选填)
内 容:
验证码: 请点击后输入四位验证码,字母不区分大小写
      

     

©2009 Baidu