资讯 手机客户端 00 : 00 : 00
圈子家园文章新帖公交查询实验室网盘教案管理上网客户端课表查询切换到宽版

127社区

 找回密码
 立即注册

只需一步,快速开始

用新浪微博连接

一步搞定

关闭

站长推荐

亲,还没下载论坛手机客户端?跟上潮流做时尚达人。掌中乐趣无处不在,快点下载吧。

查看 »

查看: 44669|回复: 44669

[开发技巧] form提交时的字符编码转换之utf-8转gb2312

[复制链接]

453

主题

24

听众

1万

积分

网站编辑

发表于 2013-9-6 18:20:27 |显示全部楼层

在IE下面指定表单提交编码方式 收藏
在跨业务、跨网站发送数据或者业务升级的时候,我们有的时候需要指定发送数据的编码方式,比如页面是utf-8编码的,而发送出去的数据却希望是GB2312编码的。在做Ajax开发的时候,我们往往都是用vbscript或者用查字典法来解决这个问题。但是有些业务,也许并不需要做成Ajax这么复杂,用表单提交显得更加自然。

其实html里面form标签有个accept-charset属性,可以帮助我们解决这个问题,可惜的是傻乎乎的IE浏览器虽然认得accept-charset,却并不卖它的帐。IE的表单提交的时候使用什么编码是完全看页面的charset决定的。还好,IE在charset这个问题上一傻到底,糊弄它一下,它就乖乖听话了:

view plaincopy to clipboardprint?


  • <HTML>      
  • <HEAD>      
  •     <meta http-equiv=content-type content="text/html; charset=UTF-8">      
  •     <SCRIPT LANGUAGE="JavaScript">      
  •         var isIE=!!window.ActiveXObject;      
  •         if(isIE && document.charset!="utf-8")location.reload(false);      
  •     </SCRIPT>      
  •     <TITLE>encode before form post</TITLE>      
  •     <META NAME="Author" CONTENT="emu">      
  • </HEAD>      
  • <BODY>      
  •     <form action="#" accept-charset="GB2312">      
  •         <input name="test" value="我" readonly>      
  •         <input type=submit>      
  •     </form>      
  • </BODY>      
  • </HTML>     


简单的讲,就是在表单发送前告诉IE说当前页面是GB2312编码就行了:
<form accept-charset="GB2312">
accept-charset="GB2312" 是写给其他没那么笨的浏览器看的。

IE为了表现它确实是一傻到底,不但在设置document.charset的时候不会用新的编码解释页面,还会在前进后退(我特地用#作为action来实现后退)的时候又尝试用新的编码去解释页面。不过还好,可以用脚本判断出来,还可以用脚本刷新一下页面解决这个问题:
if(isIE && document.charset!="utf-8")location.reload(false);

例:提交到百度
view plaincopy to clipboardprint?


  • <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">      
  • <html xmlns="http://www.w3.org/1999/xhtml">      
  • <head>      
  • <meta name="publisher" content="TideCMS">      
  • <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />      
  • <title>表单提交</title>      
  • <body>      
  • <form action="http://www.baidu.com/s" name="f"  accept-charset="GBK"  onsubmit="document.charset='GBK'" target="_blank"><input type="text" maxlength="100" size="42" id="kw" name="wd" autocomplete="off"/> <input type="submit" id="sb" value="百度一下"/><span id="hp"><a href="/gaoji/preferences.html" mce_href="gaoji/preferences.html">设置</a><br/><a href="/gaoji/advanced.html" mce_href="gaoji/advanced.html">高级</a></span></form>      
  • </body>      
  • </html>     

  



该贴已经同步到 小平的微博
学无止境,勇攀高峰!我们应该给予学生钥匙和打开知识宝库的方法,而不是宝库本身。
回复

使用道具 举报

打酱油的  发表于 2013-12-15 15:41:30
qZ2S6z http://www.MHyzKpN7h4ERauvS72jUbdI0HeKxuZom.com
回复

使用道具

打酱油的  发表于 2013-12-20 06:54:01
Do you know the address? <a href=" http://xwark.com/donkey-porn/ ">donkey porn
</a>  I agree. She should have been fucked much, much harder.  She is cute though.  Anyone know her name?
回复

使用道具

打酱油的  发表于 2013-12-20 06:56:23
I want to make a withdrawal http://threesistersfarmtx.com/about/ accutane 2nd month  E1 = Eligibility Verification with no claim submitted
回复

使用道具

打酱油的  发表于 2013-12-20 07:18:10
Could you ask her to call me? <a href=" http://lipitormgeji.blogdetik.com/ ">Online Lipitor</a>  CLASS MEETING TIMES AND LOCATIONS IN THE AHEC To be announced by individual AHEC Faculty Course Coordinators
<a href=" http://community.flixster.com/user/buydydrogesteroehit/comments ">Dydrogesterone Tablets</a>  importance of adhering to
回复

使用道具

打酱油的  发表于 2013-12-20 07:18:22
It's funny goodluck <a href=" http://community.flixster.com/user/buydydrogesteroehit/comments ">Buy Dydrogesterone</a>  coverage code of J will be returned in the
<a href=" http://community.flixster.com/user/buydiarexilo/comments ">Purchase Diarex</a>  6 47-52 First Insurance Carrier Code
回复

使用道具

打酱油的  发表于 2013-12-20 07:18:28
I'd like a phonecard, please <a href=" http://community.flixster.com/user/buydydrogesteroehit/comments ">Buy Dydrogesterone</a>  student performance to date, and type of rotation required.
<a href=" http://community.flixster.com/user/buydiarexilo/comments ">Purchase Diarex</a>  Bureau of Consular Affairs
回复

使用道具

打酱油的  发表于 2013-12-20 07:18:38
Just over two years <a href=" http://lipitormgeji.blogdetik.com/ ">Buy Lipitor Cheap</a>  professional policies. No mention may be made of confidential or proprietary information to any
<a href=" http://developer.teradata.com/user/25mglexaproakin ">2.5 Mg Lexapro</a>  American Pharmaceutical Associations Cod e of Ethics.
回复

使用道具

打酱油的  发表于 2013-12-20 07:18:42
I'm sorry, I didn't catch your name <a href=" http://community.flixster.com/user/buydydrogesteroehit/comments ">Dydrogesterone Tablets</a>  The Office of Experiential Training and Continuing Pharmacy Education -TSU COPHS Page 19
<a href=" http://developer.teradata.com/user/buydigoxiniku ">Purchase Digoxin</a>  LN UT Approved Near Limit, P&C Not Invoked
回复

使用道具

打酱油的  发表于 2013-12-20 07:18:51
Can I take your number? <a href=" http://www.fieldworkfuture.com/index.php/proventil/ ">albuterol online</a>  fraud and abuse. The policy and procedures meet federal statue/regulation citation
<a href=" http://www.boholplazaresort.com/maxalt/ ">maxalt buy</a>  In a large skillet:
回复

使用道具

高级模式
B Color Image Link Quote Code Smilies

插件友情推广计划插件友情推广计划插件友情推广计划

手机客户端|Archiver| 127社区-重庆科创职业学院论坛 ( 渝ICP备10016736号 )   |   

GMT+8, 2014-2-24 20:29

回顶部