在不同编码的页面间通过表单传递参数乱码的问题

今天遇到一个很神奇的问题,用户告诉我这边网站上的表单提交到查询系统之后得不到返回值,查询结果是0条记录,但是再本地纯html执行的结果却能搜索到值。自己验证了下,果然如此,而且比对两边GET提交的参数,除了有个字段的值不同外,参数个数这些都是相同的,故考虑有可能是编码问题造成的影响。

分别打开两个文件后查看,发现两边编码确实不一致,而服务器那边为GB2312,传递UTF-8编码的参数过去不能正常解析出来,故放狗搜索,查找到form上一个很少用的属性。

accept-charset="gb2312"

这个属性很有意思,可以设置表单以什么编码对内容进行编码,所以,给form 加上这个属性,就好了。

不过很恶心的,IE对这个属性不支持,于是只好对表单的onSubmit()方法进行下hack,加上

onsubmit="document.charset='gb2312';"

问题彻底解决。

例,在php中我们可以使用header来解决乱码问题

PHP header申明charset为utf8, Apache配置defaultcharst gbk,页面文件编码是utf8

header("Content-Type:text/html; charset=utf-8");

时间: 2024-10-31 18:07:17

在不同编码的页面间通过表单传递参数乱码的问题的相关文章

php页面 表单传递参数实例教程

post表单传递参数  代码如下 复制代码 <html> <head> </head> <body> <h3>search</h3> <form action="c.php" method="post"> depart name:<input type="text" size=25 name="depart" value="&q

ASP中一个页面多个表单的提交

页面 做网页有时我们需要将多个表单方在同一个页面处理表单的程序页怎样才知道那个表单被提交了并作相应的处理呢?下面是一个例子: '''''''''''''''''''''form.asp <%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%><script language="vbscript" runat="server">sub chuli()if request.QueryS

多个jsp页面的表单传递问题

问题描述 多个jsp页面的表单传递问题 思路:一个jsp页面接收到上一个jsp页面的表单,再加上自身的表单,两个表单传向下一个jsp页面.两个表单也可以整理成一个表单,然后传递到下一个表单. 由于页面较多,考虑的是将所有表单依次传递,到最后一个页面然后再一起提交到后台,但是传递过程中永远只传递到了上一个页面的表单,本人小白,求教如何实现这样的功能. a.jsp <form method=""post"" id=""survey"&

webview加载页面后form表单的位置不对,点了几下屏幕就又好了

问题描述 webview加载页面后form表单的位置不对,点了几下屏幕就又好了 下边是我的MainActivity.java以及布局,跪求大牛指导. android:layout_width="fill_parent" android:layout_height="fill_parent" > <ImageView android:id="@+id/wordpress_logo" android:layout_width="

asp.net使用post方式action到另一个页面,在另一个页面接受form表单的值!(报错,已解决!)

原文:asp.net使用post方式action到另一个页面,在另一个页面接受form表单的值!(报错,已解决!) 我想用post的方式把一个页面表单的值,传到另一个页面.当我点击Default.aspx的Send提交按钮时,这个时候会action到Default2.aspx页面,在这个时候就报错了,报的错误是:Validation of viewstate MAC failed. If this application is hosted by a Web Farm or cluster, e

求教,一个页面两个表单第一个可以取值第二个就不行了

问题描述 求教,一个页面两个表单第一个可以取值第二个就不行了 第一个表单通过$("#xx").val可以取到 但是第二个取到的内容就是undefined 希望求解答 解决方案 选择器有问题,没有找到元素,检查是否存在选择器对应的元素

php-我想用PHP制作一个表单,想在下一页面获取填写表单的内容,不要通过数据库读写

问题描述 我想用PHP制作一个表单,想在下一页面获取填写表单的内容,不要通过数据库读写 如题.就是1.php里面是表单代码,提交表单后内容在2.php直接出现,不要读写数据库 解决方案 那你get好了,简单粗暴,不知道楼主为啥是这个需求. 解决方案二: http://bbs.csdn.net/topics/390375316 解决方案三: <form action="2.php" method="post"> <!--你的Form内容-->

Spring mvc 一个页面 多个表单 如何绑定

问题描述 例子:index.jsp有两个表单ID分别为form1和form2同时两个表单都提交以后都链接到index.jsp<formid="form1"action="index.jsp"method="post"><spring:bindpath="form1.login"><inputtype="text"name="${status.expression}&q

文件表单servlet接收乱码

问题描述 文件表单servlet接收乱码 我写的一个文件表单,在servlet中接收input=text这种数据部分是乱码(其中一个我用了(ite=new String(ite.getBytes(""gbk"")utf-8"");))接收到的一个不是乱码,但是下一个数据再用这种方法就变成了乱码,用iso-8859-1转utf-8和gb2312页不可以. 前端的表单 用了 enctype=""multipart/form-dat