ajax参数乱码转换
常见的乱码有两种:一个是表单提交出现乱码;一个是以地址栏传参数出现乱码。
针对第一种形式的乱码,可以在每个jsp页面加上<%@ page pageEncoding="GB18030"%>注:jsp2.0适用; 或者加上<%@ page contentType="text/html; charset=GB18030"%>,“GB2312”、“GBK”、“UTF-8”也可以,反正整个系统中统一就可以。还有一种方式是使用 request.setCharsetEncoding("GB18030"),可以使用Filter统一处理。
针对地址栏参数出现乱码的情况,解决方案如下(tomcat适用,其它的没有弄过):
在tomcat的配置文件:server.xml中,找到connector元素,在后面加上一个属性 ERIEncoding="GB18030",GB18030是我用的编码方案,在读者的项目中,可以设定成系统中统一使用的编码方案。注意 connector元素有两个,一个是针对http,一个是针对https,可以都加上。
下面讨论一下Ajax方式下的乱码问题:首先,如果整个项目使用UTF-8编码,并对request(调用xmlhttp对象的 setrequestheader("contentType","text/html;charset=uft-8")方法)进行了正确的编码,就不会有乱码;如果整个项目选用了GB18030方案编码,那么一般情况下会出现乱码。产生的原因就是:xmlhttp使用了UTF-8方案对传递的参数进行编码(这也是整个项目使用UTF-8编码不出现乱码的原因)。我们可以做一个试验对此进行验证:
String str ="博客";
String newstr = new String(str.getBytes("UTF-8"),"GB18030");
如果你的系统使用的WINDOW,项目使用的是GB18030(或者GBK或者GB2312),输出newstr就会是乱码,这个乱码应该与你使用ajax提交中文“博客”所得到的乱码是一致的。 还有个问题,
String newstr2=new String(newstr.getBytes("GB18030"),"UTF-8");这样再得到一个新的字符串,这个字符串与初始的字符串str并不相同,最后一个字会是乱码,这个我不知道是什么原因,那们知道原因请告诉我一下。
这样,知道了原理就可以找方法来避免乱码了。经过试验我找到两种方法来解决Ajax的乱码问题(其实原理是一样的):
前提是使用setrequestheader方法进行了正确的编码。
一、提交中文是使用javascript的函数:encodeURI进行编码,然后到服务器端使用
先使用UTF-8编码提取参数:
request.setCharacterEncoding("UTF-8");
String str = request.getParameter("param");
然后使用下面的方式进行解码:
java.net.URLDecoder.decode(str,"UTF-8")
这样就可以得到正确的参数。
二、可以使用encodeURI进行两次编码,然后在服务器端使用以下方式:
String str = request.getParameter("param");
然后使用下面的方式进行解码:
java.net.URLDecoder.decode(str,"UTF-8")
分享到:
相关推荐
本文将深入探讨Ajax中文乱码问题的成因,并提供一系列解决方案。 **一、问题原因** 1. **编码格式不一致**:服务器与客户端(浏览器)之间使用的字符编码格式不同,例如服务器使用GBK编码,而浏览器使用UTF-8编码...
### Ajax 中文乱码问题详解 #### 一、引言 在进行Web开发的过程中,我们经常需要使用Ajax技术来实现异步数据交换。然而,在处理包含中文字符的数据时,经常会遇到中文乱码的问题。这个问题主要源于不同的编码方式...
然而,在处理中文等非ASCII字符时,经常会遇到一个令人头疼的问题——中文乱码。本文将详细介绍如何在JavaScript中对中文进行编码,并在Java后端进行解码来解决这一问题。 #### 一、问题背景 在使用AJAX向服务器...
本文将深入探讨Ajax中文乱码问题的原因及其解决方案。 首先,我们需要理解Ajax乱码的根源。当JavaScript发送HTTP请求时,如果服务器和客户端之间关于字符编码的约定不一致,就会导致乱码。常见的原因包括: 1. **...
### AJAX解决中文乱码(Java/JSP) #### 知识点概述 在Web开发中,尤其是在使用Java与JSP技术栈进行开发时,经常会遇到的一个问题是:如何处理AJAX请求中的中文字符乱码问题。本篇文章将详细介绍如何通过前端编码...
在进行Web开发时,我们经常会遇到Ajax GET请求发送中文参数时出现乱码的问题...在提供的压缩包文件`strtus-ajax-by-get-zh-garbled`中,可能包含了关于Struts框架下解决Ajax GET请求中文乱码的示例代码,可以参考学习。
本文将基于提供的文件信息,详细解析两种解决Ajax提交后台取值中文乱码的方法。 ### 方法一:使用URL编码 在第一个示例中,开发者通过调用`encodeURIComponent()`或`encodeURI()`函数对请求URL中的参数进行编码。...
中文乱码问题在AJAX应用中时有出现,主要表现为从服务器获取的数据在前端显示时出现乱码。本篇文章将对AJAX中文乱码问题进行深入探讨,并提供解决策略。 1. 乱码产生的原因 - 数据编码不一致:服务器返回的数据...
例如,我们使用 AJAX 通过 URL 传递中文参数 "中文测试" 给 Servlet,Servlet 在接收参数时却变成了乱码 "�������"。这使得我们的应用程序无法正确地处理中文参数。 解决方案 要解决这个问题,我们可以从两...
在IT领域,特别是Web开发中,遇到“Ajax提交乱码”的问题是非常常见的,尤其是在处理中文或其它非英文字符集时。根据给定的文件信息,我们可以深入探讨如何使用Jquery来解决这一问题。 ### Ajax提交乱码问题的本质 ...
**Ajax 乱码解决方案** Ajax 乱码问题在开发Web应用程序时经常遇到,尤其是在涉及到不同编码格式时。本文将深入探讨Ajax与字符编码相关的技术细节,并提供几种有效的解决策略。 首先,JavaScript处理字符的方式是...
Ajax乱码问题主要涉及到字符编码的处理,包括服务器端、客户端以及文件的编码设置。解决Ajax乱码问题的关键在于确保整个数据传输链路上的编码一致性。 1. **字符编码** - **UTF-8**:广泛使用的编码格式,支持多种...
为了解决AJAX中文乱码问题,常见的方法包括: 1. 使用encodeURIComponent进行编码 通过对发送的数据使用encodeURIComponent函数进行编码,可以转换数据格式,使其适应URL传输规范。然后,需要确保服务器端使用相应...
### AJAX技术使用XMLHttpRequest对象传递参数的中文乱码问题 #### 背景与问题概述 在使用AJAX技术进行前后端数据交互时,经常会出现中文字符编码的问题,尤其是在使用`XMLHttpRequest`对象发送请求的过程中。例如...
当数据在这些组件间传递时,如果编码不一致或转换不当,就会导致中文乱码。 #### 解决方案:统一字符编码 解决AJAX中文乱码的关键在于确保整个系统中所有组件使用相同的字符编码。最常用的编码是UTF-8,因为它支持...
在开发过程中,Ajax(异步JavaScript和XML)技术常常用于实现网页的无刷新交互,但与之相伴的一个常见问题是中文乱码。以下是一些解决Ajax中文乱码问题的方法: 1. **请求头设置**: 当发送Ajax请求时,需要确保...
**Ajax中文乱码问题详解与解决方案** 在开发Web应用程序时,尤其是在处理中文字符时,Ajax中文乱码问题是一个常见的困扰。这是因为不同的系统、浏览器、服务器和文件可能使用不同的字符编码,导致数据在传输过程中...
在JSP中,当使用Ajax进行GET请求时,可能会遇到中文乱码的问题。这通常是由于URL编码不匹配或处理不当导致的。以下是一些解决这个问题的关键知识点和步骤: 1. **URL编码问题**: URL编码是一种标准,用于将特殊...
使用`encodeURIComponent`函数可以将参数转换为URI组件,该函数会自动处理特殊字符和非ASCII字符的编码,从而避免乱码问题。 ```javascript url = "xxx.action?key=" + encodeURIComponent(key); ``` #### 2. ...