最近在开发中碰到ajax传递中文参数乱码的问题,弄了很久才搞定,在此记录一下开发经过,以备以后查阅。
开发时测试的服务器为tomcat6.0,web前台ajax传输未经编码的中文参数arg=中文参数,java后台通过下面代码获取中文参数:
String arg= request.getParameter("arg");
arg = new String(arg.getBytes("ISO-8859-1"), "GBK");
在实际部署时用的是weblogic8服务器,由于web容器编码方式不同,发现通过上面的代码获取的中文参数为乱码。为了能够兼容不同的web容器,在传递中文时需要将中文参数进行编码:
var arg = "中文参数";
arg = encodeURI(encodeURI(arg)); //这里编码两次,不然后台获取时还是乱码
后台通过如下方式获取参数:
String arg = request.getParameter("arg");
arg = java.net.URLDecoder.decode(arg, "UTF-8"); //解码取得中文参数
在取得中文参数后,经过处理要返回带中文内容的xml格式文本到前台,在tomcat下能够获取正确的内容,但在weblogic8下发现返回的中文内容被截断了,并破坏了xml文档结构(在weblogic 11g没有该问题),查了半天不知道什么原因,即使给中文内容报上<![CDATA[]]>也无效。于是干脆将中文进行编码后在返回到前台页面:
java.net.URLEncode.encode("中文内容 ", "UTF-8");
前台获取后进行解码:
var result = decodeURI(returnValue);
按照上面修改后,在weblogic和tomcat下测试了一下,不管是前台往后台,还是后台往前台传递中文都不会出现乱码。
前台获取中文内容显示在页面上时,发现中文内容后面有一大串的加号,检查了下代码发现,后台进行编码的中文内容中含有空格,java.net.URLEncode.encode()会把空格编码为“+”,而前台就avascript的decodeURI()不会把+号解码为空格。解决方法是将后台编码后的字符串中的“+”替换为“%20”:
java.net.URLEncode.encode("中文内容 ", "UTF-8").replace("+", "%20");
分享到:
相关推荐
### AJAX传递中文参数乱码解决办法 在Web开发过程中,数据传输是不可或缺的一部分,而AJAX作为一种无需重新加载整个页面的情况下就能与服务器交换数据的技术,被广泛应用于动态数据交互场景中。然而,在处理中文等...
总的来说,解决`jQuery Ajax`传递中文参数乱码问题的方法包括以下步骤: 1. 确保前端页面的`meta`标签指定正确的字符集,如`<meta charset="UTF-8">`。 2. 在`$.ajax`调用中,设置`contentType`为`"application/x-...
主要解决在ajax中中文参数传递过程中,服务器接收到中文乱码的问题
除了上述方法,解决Ajax传递中文参数乱码问题还有其他策略。例如,可以在发送请求前调整浏览器的请求头,指定字符集。在jQuery的Ajax设置中,可以通过`contentType`属性来设置: ```javascript $.ajax({ url: '...
总结起来,解决JQuery.ajax传递中文参数乱码问题的核心在于: 1. 在`$.ajax`设置中指定`contentType: "application/x-www-form-urlencoded; charset=UTF-8"`。 2. 服务器端的页面响应编码(如ASP.NET的`...
例如,我们使用 AJAX 通过 URL 传递中文参数 "中文测试" 给 Servlet,Servlet 在接收参数时却变成了乱码 "�������"。这使得我们的应用程序无法正确地处理中文参数。 解决方案 要解决这个问题,我们可以从两...
### AJAX解决中文乱码(Java/JSP) #### 知识点概述 在Web开发中,尤其是在使用Java与JSP技术栈进行开发时,经常会遇到的一个问题是:如何处理AJAX请求中的中文字符乱码问题。本篇文章将详细介绍如何通过前端编码...
第二个示例展示了另一种解决中文乱码问题的方法——使用`data`属性来传递参数。这种方式下,参数作为JSON对象的一部分被传递,而不是作为URL的一部分。这意味着参数不会经过URL编码,因此避免了由URL编码引起的乱码...
### AJAX技术使用XMLHttpRequest对象传递参数的中文乱码问题 #### 背景与问题概述 在使用AJAX技术进行前后端数据交互时,经常会出现中文字符编码的问题,尤其是在使用`XMLHttpRequest`对象发送请求的过程中。例如...
在IT领域,特别是Web开发中,字符编码的处理是一大挑战,尤其是在跨浏览器、跨平台的环境下,如在Ajax请求中遇到的FireFox与IE之间的乱码兼容问题。本文将深入探讨这一问题,并提供详细的解决方案。 ### Ajax与字符...
通过以上方法,我们可以有效地解决使用Ajax传递中文参数时出现的乱码问题。正确配置Tomcat服务器以及合理设置前端和后端的编码格式,可以确保中文数据在整个Web应用中被正确地传输和处理。这对于提高用户体验以及...
通过上述方法,我们可以有效地解决在使用ExtJS进行Ajax同步请求时,中文参数出现乱码的问题。关键是保证前后端编码的一致性,以及正确地使用编码与解码函数。此外,还可以考虑在服务器端配置文件中设置统一的字符集...
3. **URL参数传递**:在URL中传递含有中文的参数。 #### 二、问题分析 乱码产生的根本原因在于字符编码不一致或编码转换错误。具体来说,在数据传输过程中涉及到以下几个关键环节: 1. **客户端编码**:前端页面...
在实际开发中,我们经常需要通过Ajax传递参数来实现特定功能,如验证用户输入、获取动态数据等。下面将详细介绍如何使用Ajax传递一个参数。 首先,让我们看一段基本的Ajax代码示例,这个例子用于在用户离开用户名...
本文实例讲述了escape函数解决js中ajax传递中文出现乱码问题,分享给大家供大家参考。具体方法如下: 一、问题描述: 本来网页特效中的escape()是将中文按iso-8859-1字符集进行url编码的,那样通过 request....
如果数据包含中文或其他非ASCII字符,使用`encodeURIComponent()`函数进行URL编码,避免在传输过程中出现乱码。 ```javascript let data = { username: "张三", message: "你好,世界!" }; let encodedData = ...
总结来说,当遇到JQuery ajax传递中文参数时出现乱码问题,开发者需要在ajax请求中显式声明contentType为`application/x-www-form-urlencoded;charset=UTF-8`。这样,无论页面编码是什么,中文数据都能被正确编码和...