`
long_yu2
  • 浏览: 334604 次
社区版块
存档分类
最新评论

jquery 的的中文乱码汇总

阅读更多
var _realname = $("input[name='_searchName']").val();
	var termcourseId = '<%=termid%>';
	var classId = '<%=classid%>';
	var url = "/addressbook/studentListNoPage.do";
	//var dataUrl = "formMap.TERMCOURSE_ID="+termcourseId+"&formMap.CLASS_ID="+classId+"&formMap.IS_ONLINE=all&formMap.REALNAME="+_realname;
	$.ajax({
		   type: "POST",
		   url: url,
		   dataType:"json",
		   data: {
			   "formMap.TERMCOURSE_ID":termcourseId,
			   "formMap.CLASS_ID":classId,
			   "formMap.IS_ONLINE":"all",
			   "formMap.REALNAME":encodeURI(_realname)
		   },
		   contentType: "application/x-www-form-urlencoded; charset=utf-8",
		   success: function(data){
			   data = eval(data);
			   var html = "";
			   $("#allUnselectedUser").html(html);
		   },
		   error : function(XMLHttpRequest, textStatus, errorThrown){
			   alert(textStatus);
		   }
		});
 

其中当使用dataUrl中的&方式提交时,无论前台是使用encodeURI或者encodeURIComponent又或者escape把中文转码,提交到Action中都是乱码,并不是想要的%e6%b1%89%e5%ad%97这种转后编码。即使加上contentType也不行。

把dataUrl中的&方式提交修改为data:{name:value}的方式提交即可。

在Action中使用 URLDecoder.decode(realname, "UTF-8")来转码即可转换为中文了。使用UTF-8是因为Jquery的提交方式默认为UTF-8,即使把contentType中的 charset修改其他,例如GBK,后台也把UTF-8修改GBK,都不能正确转换。

 

以下使用转载:http://blog.sina.com.cn/s/blog_4b81125f0100fc6x.html

jQuery ajax乱码问题解决

一、测试环境
jQuery:1.3.2
tomcat:5.5.17

二、测试方法

1.使用get方式

服务器端java代码:
String name = new String(request.getParameter("name").getBytes("iso8859-1"),"utf-8");

客户端js代码:
$.ajax({url: "2.jsp",type: "get",data: {name:"中文"},success: function(response){
         alert(response);
}});
结果:正确显示

$.ajax({url: "2.jsp",type: "get",data: "name=中文",success: function(response){
         alert(response);
}});
结果:乱码

$.get("2.jsp", { name: "中文" },function(response){
     alert(response);
});
结果:正确显示

$.get("2.jsp", "name=中文",function(response){
     alert(response);
});
结果:乱码


2.post方式

服务器端java代码:
request.setCharacterEncoding("UTF-8");  
String name = request.getParameter("name");

客户端js代码:
$.ajax({url: "3.jsp",type: "post",data: "method=testAjaxPost&name=中文",success: function(response){
     alert(response);
}});
结果:正确显示

$.ajax({url: "3.jsp",type: "post",data: {name:"中文"},success: function(response){
     alert(response);
}});
结果:正确显示

$.post("3.jsp", { name: "中文" },function(response){
     alert(response);
});
结果:正确显示

$.post("3.jsp", "name=中文",function(response){
     alert(response);
});
结果:正确显示

三、使用filter

public void doFilter(ServletRequest request, ServletResponse response,
         FilterChain chain) throws IOException, ServletException {
     HttpServletRequest req = (HttpServletRequest) request;
     if (req.getHeader("X-Requested-With") != null && req.getHeader("X-Requested-With").equalsIgnoreCase("XMLHttpRequest")) {
         request.setCharacterEncoding("utf-8");
     } else {
         request.setCharacterEncoding("gbk");
     }
     chain.doFilter(request, response);
}

jQuery在使用ajax的时候会在header中加入X-Requested-With,值为:XMLHttpRequest,filter中判断是 jQuery的ajax请求时就把字符编码设为utf8,这样可以解决post提交中的中文乱码问题,不需要在代码中设置 request.setCharacterEncoding("UTF-8");

对于get方式的中文乱码问题,建议不使用get方式提交中文,统统改为post ^-^

 

为了和prototype.js处理中文的方式一致,可以使用如下的方式,自定义header中的属性RequestType
$.ajax({
     url: "3.jsp",
     type: "post",
     data: {name:"中文"},
     beforeSend: function(XMLHttpRequest){
         XMLHttpRequest.setRequestHeader("RequestType", "ajax");
         alert("开始");
     },
     success: function(data, textStatus){
         alert(data);
     },
     error: function(XMLHttpRequest, textStatus, errorThrown){
         alert("错误:" + textStatus);
     },
     complete: function(XMLHttpRequest, textStatus){
         alert("完成:" + textStatus);
     }
 });
filter代码如下:
public void doFilter(ServletRequest request, ServletResponse response,
         FilterChain chain) throws IOException, ServletException {
     HttpServletRequest req = (HttpServletRequest) request;
     if (req.getHeader("RequestType") != null && req.getHeader("RequestType").equalsIgnoreCase("ajax"))) {
         request.setCharacterEncoding("utf-8");
     } else {
         request.setCharacterEncoding("gbk");
     }
     chain.doFilter(request, response);
}

 

4
0
分享到:
评论

相关推荐

    jQuery中文乱码

    ### jQuery中文乱码完美解决方案 在处理Web应用中,尤其是涉及到多语言环境时,中文乱码问题时常困扰着开发者。本文将深入探讨jQuery在处理中文数据时遇到的乱码问题,并提供一系列有效的解决方案。 #### 一、理解...

    Jquery serialize() 中文乱码及解决方法

    Jquery serialize() 中文乱码及解决方法 Jquery serialize() 方法在处理中文数据时,经常会出现乱码问题。这种问题的原因是 serialize() 方法自动调用了 encodeURIComponent 方法将数据编码了,从而导致中文乱码。...

    jquery+asp ajax 中文乱码问题解决文档

    ### jQuery + ASP AJAX 中文乱码问题解决方案 在开发基于jQuery和ASP的Web应用程序时,中文乱码问题可能成为困扰开发者的一大难题。特别是在使用Ajax进行前后端数据交互时,中文字符可能会出现乱码现象,影响用户...

    jquery自动补全示例。包括后台,中文乱码解决JS

    本示例将涵盖如何使用jQuery实现自动补全功能,包括解决中文乱码问题以及常用属性配置。 ### 1. jQuery自动补全基本原理 jQuery 自动补全基于jQuery库,通过监听用户在输入框中的输入事件,实时查询预定义的数据集...

    jquery获取URL中参数解决中文乱码问题的两种方法

    以上就是解决在使用jQuery获取URL参数时出现中文乱码问题的两种方法,以及相关的编码和解码处理方式。需要注意的是,乱码问题的出现主要是由于编码和解码不一致导致的,所以在前后端处理URL参数时,一定要注意正确地...

    tableExport导出pdf 中文 乱码解决

    然而,当涉及到非英文字符,尤其是中文字符时,可能会遇到编码问题,导致乱码。本文将深入探讨`tableExport`导出PDF时中文乱码的解决方案。 首先,我们要理解乱码的根源。中文字符在计算机中是以特定的编码方式存储...

    jquery uploadify scriptData 中文乱码

    在使用jQuery Uploadify插件时,用户可能会遇到“scriptData”参数中的中文数据出现乱码的问题。这通常是因为字符编码不一致导致的。Uploadify是一个非常流行的文件上传插件,它允许用户通过异步方式上传文件,同时...

    jspdf中文乱码解决方法.zip

    在使用jspdf库生成PDF文档时,经常遇到中文字符显示为乱码的问题。这通常是由于字符编码不兼容或缺少字体支持导致的。本教程将详细解释如何解决jspdf中文乱码的问题,帮助开发者顺利导出含有中文内容的PDF。 首先,...

    Json操作及中文乱码解决方案

    总之,处理JSON操作中的中文乱码问题,关键在于确保数据的编码和解码过程中使用了UTF-8。在前端,jQuery的`$.getJSON`已经做了很好的处理,而在后端,如Java中,Gson库也可以有效地管理中文字符。对于其他编程语言和...

    解决中文按钮乱码的jquery uploadify上传插件

    uploadify是一款基于jQuery库的上传插件,但很可惜的是无论你怎么设置参数buttonText ,它的中文按钮都会出现乱码的情况.本资源更正了源码的编码方式,从根本上解决了中文(包括CJK)乱码的问题。要知道乱码原因,及...

    jQuery1.12.4+jQuery中文手册.rar

    **jQuery 1.12.4 知识点详解** jQuery 是一个广泛使用的JavaScript库,它简化了HTML文档遍历、事件处理、动画以及Ajax交互等任务。在本压缩包中,我们有两个版本的jQuery核心库文件:`jquery-1.12.4.js` 和 `jquery...

    GBK编码下jQuery_Ajax中文乱码解决方案

    ### GBK编码下jQuery_Ajax中文乱码解决方案 #### 背景介绍 在Web开发过程中,使用Ajax技术与服务器端交互数据时经常会遇到字符集编码的问题,尤其是在使用GBK编码的环境中,通过jQuery发起的Ajax请求往往会导致...

    jquery中文乱码的多种解决方法

    ### jQuery中文乱码的多种解决方法 #### 一、引言 在Web开发过程中,中文乱码是一个常见的问题,尤其是在使用jQuery进行异步请求时。本文将详细介绍如何解决使用jQuery时遇到的中文乱码问题,并提供多种解决方案。 ...

    jquery的ajax编码乱码解决方案

    简单整理的乱码处理方案,jquery的ajax解决UTF-8以及GBK的问题

    jQuery中文转换成拼音代码

    在IT领域,jQuery中文转换成拼音的代码是一个实用的功能,尤其在处理中文数据时非常有用。这个功能可以将用户输入的中文字符转化为对应的拼音,同时还能生成中文汉字的唯一编号。这种技术在诸如搜索引擎优化(SEO)...

    jquery1.7中文手册CHM文档(附jquery1.82chm手册)

    资源名称:jquery1.7 中文手册 CHM文档(附jquery1.82 chm手册)内容简介:因国内jquery中文手册更新太慢了,等了一段时间实在等不下去了,干脆自己动手做一个丰衣足食,时刻更新. 最后感谢Shawphy提供1.4.1版,jehn提供...

    jQuery中文文档1.8和1.4的chm文档

    《jQuery中文文档1.8和1.4的chm文档》是两个版本的jQuery官方文档的中文翻译版,主要用于帮助开发者理解和使用这个广泛应用于Web开发的JavaScript库。jQuery以其简洁的API和强大的功能,极大地简化了DOM操作、事件...

    jQuery源码 jQuery源码 jQuery源码

    jQuery源码jQuery源码jQuery源码jQuery源码jQuery源码jQuery源码jQuery源码jQuery源码jQuery源码jQuery源码jQuery源码jQuery源码jQuery源码jQuery源码jQuery源码jQuery源码jQuery源码jQuery源码jQuery源码jQuery源码...

    jquery fileupload上传百分比 JAVA版解决中文乱码

    本篇将详细探讨如何在Java环境下使用jQuery File Upload实现文件上传并处理中文文件名的乱码问题。 首先,jQuery File Upload的核心原理是利用HTML5的File API进行异步文件上传。它通过AJAX请求将文件分块上传到...

Global site tag (gtag.js) - Google Analytics