今天遇到一个很神奇的问题,用户告诉我这边网站上的表单提交到查询系统之后得不到返回值,查询结果是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