困扰大半天的编码问题和各个浏览器的悲剧!
今天早上上班,一女同事撇着嘴过来:“我那论坛帐号又出问题了。 提示帐号密码错误,用123456的密码进,显示不知名的东东,我的用户名不是这个。。”
唉,看来今天又有得忙了,本来早点过来看看新闻的,又要落空了,早点解决吧(事实却出乎意料);
我问了她一些问题:
Q:昨天可以登录上去吗?
A:可以啊。
Q:昨天帐号有没有改动什么,比如说帐号,密码等?
A:没有啊,没动过。。
我郁闷。。,她那边没有动过,我这边没有动过,难道程序会自己改动。还是我把那个公共 Login.js调出来看看吧:
最后修改日期一直是前几个月的,排除有人修改过。
在我们官网用她帐号登录看看,神奇了,居然可以,在论坛就是不可以,接口一样啊。接着排查,查百度、GOOGLE资料等。
最后可能是数据编码问题,一步一步排除吧,没有解决问题,一切都是可能;
怎样设置编码呢?在哪里设置?
传过去数据有问题,那应该要设置 form 的编码吧。
accept-charset
一个很少用到的表单属性,利用它实现在不同编码的页面里实现表单提交的一种很方便的解决方法;
问题背景:
当接收数据的页面和传送数据的页面编码不一致,如果不特殊处理,传输中文就会乱码。
你可以自己编写各种扩展来实现,不过我们现在讲的是一种简单有效的办法;
回归刚刚的问题:在官网是UTF-8,而论坛是GB2312,终于被我找到了,欣喜。。
注:查看编码方法:查看(V)--》编码(D)
所以赶快把form 设置为:
<form method="post" action="..." accept-charset="utf-8">
...
</form>
在 IE 下调试,还是不行,纳闷了,应该是编码问题啊。。,再次baidu,google;
发现有这样一段提示:
<form method="post" action="..." accept-charset="utf-8">
...
</form>
如此的代码在Firefox等正常的浏览器下没有任何问题,但是遇到IE这个变态浏览器就不灵光了,全部兼容如下:
<form method="post" action="..." accept-charset="utf-8" onsubmit="document.charset='utf-8';">
...
</form>
再一次,调试,真行了!!!!
我想说的是:我们的悲剧,浏览器的悲剧!!
青青豆网址导航开发团队