一定要养成加meta 编码charset的好习惯
事情是这样的,因为做程序,需要有中间页,就是一个表单拼装数据,然后自动提交。
参数内有一个是inputCharset,因为我们采用GBK编码,所以这个我就传了一个GBK,
因为我以为他们会根据这个东西来去用iconv转码,
可是有人反应,说提交过去报错。
很是郁闷,用httpwatch看了半天,把信息保存到本地,然后传给我,神奇的是我可以用他产生的表单提交,一切正常。
于是怀疑和编码有关,因为之前我看他浏览器的默认编码是UTF-8的,而我的是GBK,
我们的浏览器版本是一样的,这就不存在浏览器问题,而且,他用的是IE6,更不会出现IE8RC版的奇怪问题。
于是,给他传了一个我这面可以访问的FORM表单代码,和预料的一样,提交失败。
于是,再加上charset定义,OK,居然就这么提交了。
看来,养成在代码中加meta编码定义charset是一个好习惯啊。
其定义方法为:
啥?你问我这个例子为啥不用gb-2312?我又不傻,万一浏览器将这也认为是一个META项,我本页的UTF-8不就失效了吗?
唉,meta,charset,我恨死你了。。
另外,搜了一下资料,传说中使用form标签的属性accept-charset是可以在不同编码的页面间提交表单
下面内容参考自:利用form的“accept-charset”在不同编码的页面间提交表单
比如,我提交表单的页面是GBK的,但是人家接收方是UTF-8的(正好和上一个例子相反)
那么如果我这么写的话:
这样是不会有问题的大家可以尝试一下。呵呵。
当然,这个示例只适用于非IE浏览器,如果是IE的话,可能就要加上一句
在提交的时候,改一下自己页面的编码喽。
具体效果如下:
<html xmlns="http://www.w3.org/1999/xhtml">
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<head>
</head>
<body>
<form name="demo_form" id="demo_form" method="post" action="b.php" >
<input type="text" value="啊啊啊" name="tex_1" />
<input type="text" value="哦哦哦" name="tex_2" />
<input type="submit" value="click me " />
</form>
</body>
<script type="text/javascript">
//document.demo_form.submit();
</script>
</html>
<?php
var_dump($_POST);
?>
看出来,php文件编码为utf-8。这样提交demo.html的效果为:

demo_html效果

很显然的乱码
而如果把demo.html的代码改为这样:
<html xmlns="http://www.w3.org/1999/xhtml">
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<head>
</head>
<body>
<form name="demo_form" id="demo_form" method="post" action="b.php" accept-charset="utf-8">
<input type="text" value="啊啊啊" name="tex_1" />
<input type="text" value="哦哦哦" name="tex_2" />
<input type="submit" value="click me " />
</form>
</body>
<script type="text/javascript">
//document.demo_form.submit();
</script>
</html>
用CHROME看一下效果为:
文章作者:simaopig
本文地址:http://www.xiaoxiaozi.com/2009/06/18/876/
版权所有 © 转载时必须以链接形式注明作者和原始出处!

为什么页面是gb2132的,表单用utf-8呢?数据库是什么编码的,网站就用什么编码就方便了呗
[回复]
@bolo
呵。因为数据库也用GBK啊。
那如果是两个系统打交道呢?人家设计的是UTF-8,可是你用的是GBK
当然就要想办法让这不同的编码可以通信啊。呵呵。
一般会将汉字进行urlencode编码之类的。 :grin:
[回复]
@simaopig
原来如此,我以为360网站内部通讯也搞两种编码呢
[回复]
笔记哦~ 很好的学习态度
[回复]
@bolo
没, 这个是我们和另外一家公司通迅时要用到的。
另外,我们内部网站也可能有两种编码啊。很正常的。因为是不同部门,不同应用嘛。
[回复]
@粥小卜
找这个问题的原因用了N久。呵呵。
[回复]
嗯,这个是一个好习惯 哈哈哈
[回复]
“利用form的“accept-charset”在不同编码的页面间提交表单”,这个东东以前不知道啊,呵呵,今天又学了一招啦
[回复]
@Showfom
呵呵,好习惯是慢慢培养的。
@荒野无灯
我也是昨天才知道的。呵呵。
[回复]
我基本都用utf8,昨天还发现如果用utf-8不行的话可以换成utf8试试
[回复]
@小明猪
呵呵,一般utf-8是没有问题的啦。utf8我倒没这么用过。改天试试。呵呵。
应该是主要看浏览器咋解释,人家说行就行,人家说不行就不行。
我感觉和Doctype类型也有关。
[回复]
我一直有加…不知道他们做后台的加没加了就
[回复]
@风也飘泊
我以前一般页面都会加上,但是像这种自动跳转页面就懒得管了。。
[回复]
utf-8编码的文件不指明charset ,ie8会乱码,opera不会
ie的默认编码是gb2312的吧,加上自动选择还是乱
把文件改成ansi编码就没问题了
[回复]
@beetea
嗯。 有道理。各个浏览器默认的编码是不同的。呵呵。
[回复]
今天又转到这篇幅日志了
[回复]
@荒野无灯
呵呵,猿粪啊。。 :smile: :smile:
[回复]