使用jquery.form ajaxSubmit文件上传,遇到一个很奇怪的问题,chrome浏览器、firefox浏览器都表现正常,就部分同事IE8浏览器出现乱码。
后台代码检查了一下与前几个项目都一样,调试了一下最后response.write 出来的时候中文显示也是正常。
按照网上的说法:文件格式UTF-8、过滤器也是UTF-8格式过滤
jsp也加上了以下代码:
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
</head>
后台代码不会有问题而且只有部分同事的IE8出现乱码(当时真的很郁闷),后来想难道是IE的问题。
通过http请求抓包得到了结论:的确IE浏览器与其它浏览器有区别.
下面同一请求不同浏览器的抓包图:
我本机IE8(中文返回正常)抓包图:

同事IE8
抓包图 (中文返回乱码):

chrome浏览器抓包图
(中文返回正常) :

firefox浏览器抓包图:

从图中可以对比看出来:出现乱码的的IE响应头信息中根本没有带有编码格式,没有编码格式浏览器就按照当前系统编码格式进行编码。
最后在后台代码中加入前台编码格式才解决问题,代码如下:
//设置编码
this.getResponse.setContentType("text/text;charset=UTF-8");
//输出到浏览器
this.getResponse().getOutputStream().write(str.getBytes("UTF-8"));
具体也搞不清,IE为什么这么特别!!!
有关web显示编码请参考文章:http://nassir.iteye.com/blog/1607536
解决代码参考:http://blog.csdn.net/wjc1000/article/details/7692634

- 大小: 43.5 KB

- 大小: 56 KB

- 大小: 47.5 KB

- 大小: 33.7 KB
分享到:
相关推荐
最近用到了jquery的一个fom插件,是一个全面支持表单的jQuery插件。昨天在用ajaxSubmit进行Form Post提交的时候,发现服务器端取回的中文数据居然是乱码。这个可能是因为jquery是utf-8,不支持gb2312
在Web开发过程中,使用JQuery的ajaxSubmit方法进行表单提交时,中文乱码问题是一个常见的困扰。中文乱码问题通常发生在数据的提交和接收过程中,由于字符编码的不一致导致。为了解决这个问题,首先需要了解JQuery的...
总结来说,解决JQuery AJAX提交中文乱码问题的关键在于确保客户端和服务器端字符编码的一致性。可以通过在AJAX请求中显式地设置字符集为UTF-8来解决,从而让服务器端能够正确地解码请求中的中文字符。这不仅适用于GB...
使用scriptCharset即可解决问题,用contentType就不一定可以了。 代码如下: $.ajax({ url: testUrl, dataType: ‘jsonp’, type: ‘post’, scriptCharset: ‘utf-8’ }); 上面的解决方案是最完美的...
根据给定的文件信息,我们可以深入探讨如何使用Jquery来解决这一问题。 ### Ajax提交乱码问题的本质 Ajax(Asynchronous JavaScript and XML)是一种在无需重新加载整个网页的情况下,能够更新部分网页的技术。当...