`

Ajax中文乱码问题解决方法

阅读更多
Ajax中文乱码问题解决方案一:
	1.向服务器发送数据:
		客户端:
			var date = document.getElementById("username");
	   		var url = "AjaxServlet?username=" + encodeURI(encodeURI(date.value));
	   		向服务器端发请的数据进行两次encodeURI:
		   		Java 中的 request.getParameter(String)方法会进行一次 URI 的解码过程,
		   		调用时内置的解码过程会导致乱码出现。而 URI 编码两次后,request.getParameter(String) 
		   		函数得到的是原信息 URI 编码一次的内容。
		   		接着用 java.net.URLDecoder.decode(String str,String codename) 方法,
		   		将已经编码的 URI 转换成原文。
	  	服务器端:
	  		String username = URLDecoder.decode(request.getParameter("username"),"UTF-8");
			System.out.println(username);
			
	2.接收服务器端数据:
		原因:AJAX在接收responseText或responseXML的值的时候是按照UTF-8的格式来解码的,
		如果服务器段发送的数据不是UTF-8的格式,那么接收responseText或responseXML的值有可能为乱码。	
		解决办法:
			在服务器指定发送数据的格式:
				response.setContentType("text/xml;charset=UTF-8");
				response.setHeader("Cache-Control", "no-cache");
				
				String message = "你输入的用户名是:" + username;
				PrintWriter out = response.getWriter();
				out.println("<response>");
				out.println("<passed>" + Boolean.toString(false) + "</passed>");
				out.println("<message>" + message + "</message>");
				out.println("</response>");
				out.close();
				//客户端接收解析数据:
				var mes =xmlHttp.responseXML.getElementsByTagName("message")[0].firstChild.data;
			   var val =xmlHttp.responseXML.getElementsByTagName("passed")[0].firstChild.data;
 
/**
 * Ajax中文乱码问题
 * 
 * @author zhangmingxue
 * 
 */
public class AjaxServlet extends HttpServlet {

	/**
	 * 
	 */
	private static final long serialVersionUID = 6930790433539669771L;
	
	public void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		this.doPost(request, response);
	}

	public void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		String username = URLDecoder.decode(request.getParameter("username"),"UTF-8");
		System.out.println(username);
		response.setContentType("text/xml;charset=UTF-8");
		response.setHeader("Cache-Control", "no-cache");
		String message = "你输入的用户名是:" + username;
		PrintWriter out = response.getWriter();
		out.println("<response>");
		out.println("<passed>" + Boolean.toString(false) + "</passed>");
		out.println("<message>" + message + "</message>");
		out.println("</response>");
		out.close();
	}
}
 
<html>
  <head>
    
    <title>AjaxEncoding</title>
	<meta http-equiv="pragma" content="no-cache">
	<meta http-equiv="cache-control" content="no-cache">
	<meta http-equiv="expires" content="0">    
	<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
	<meta http-equiv="description" content="This is my page">
	<!--
	<link rel="stylesheet" type="text/css" href="styles.css">
	-->
	
  </head>
  <script language="javascript">
  	var xmlHttp;
  	function createXMLHttpRequest()
    {
	   if (window.ActiveXObject) 
	   {
	  	 	xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
	  }
	  else if (window.XMLHttpRequest) 
	   {
	  		xmlHttp = new XMLHttpRequest();
	  }
   }
	function validate() 
    {
	  createXMLHttpRequest();
	  var date = document.getElementById("username");
	  var url = "AjaxServlet?username=" + encodeURI(encodeURI(date.value));
	  xmlHttp.open("GET", url, true);
	  xmlHttp.onreadystatechange = callback;
	  xmlHttp.send(null);
   }
	function callback()
    {
	  if (xmlHttp.readyState == 4) 
	   {
		  if (xmlHttp.status == 200) 
		   {
			  var mes =xmlHttp.responseXML.getElementsByTagName("message")[0].firstChild.data;
			  var val =xmlHttp.responseXML.getElementsByTagName("passed")[0].firstChild.data;
			  setMessage(mes, val);
		  }
	  }
   }
	function setMessage(message, isValid) 
    {
  		var messageArea = document.getElementById("dateMessage");
  		var fontColor = "red";
	   if (isValid == "true") 
	    {
	  		fontColor = "green";
	   }
	   messageArea.innerHTML = "<font color=" + fontColor + ">"+ message + " </font>";
   }
  </script>
  <body>
  		<input type="text" size="10" id="username" onchange="validate();" />
		<div id="dateMessage"></div>
  </body>
</html>
 
分享到:
评论

相关推荐

    Ajax中文乱码问题解决方案

    在实际开发中,可以结合使用以上方法来解决Ajax中文乱码问题。例如,可以使用jQuery的`$.ajax`方法,设置`contentType`和`dataType`属性,以及在成功回调函数中处理响应数据: ```javascript $.ajax({ url: 'your-...

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

    通过上述两种方法,可以有效地解决jQuery + ASP AJAX组合下出现的中文乱码问题,确保数据的正确传输和显示,提高应用的国际化水平和用户体验。无论是选择统一编码为UTF-8,还是通过修改jQuery源代码支持GB2312,...

    java认证_Ajax中文乱码问题及解决方法.doc

    【Java认证:Ajax中文乱码问题及解决方法】 在Java Web开发中,使用Ajax进行异步数据交互时,经常会遇到中文乱码的问题。这主要涉及到字符编码的处理,特别是当Ajax请求发送的数据包含中文字符时。以下是两种常见的...

    ajax提交中文乱码解决方法

    ### AJAX提交中文乱码解决方法 在Web开发中,AJAX(Asynchronous JavaScript and XML)是一种在无需重新加载整个网页的情况下,能够更新部分网页的技术。它通过JavaScript发起异步请求,与服务器进行数据交换,从而...

    Ajax 中文乱码问题

    通过以上介绍的方法,我们可以有效地解决Ajax请求过程中可能出现的中文乱码问题。关键在于确保数据在发送和接收过程中的编码一致性。希望本文能帮助开发者更好地理解和处理这类问题,提升用户体验。

    ajax中文参数乱码问题解决方法

    主要解决在ajax中中文参数传递过程中,服务器接收到中文乱码的问题

    ajax中文乱码如何解决

    针对Ajax中文乱码问题,这里提出一个解决方案,这个方案在作者的开发环境中(XP, Eclipse, GB18030编码)已经成功解决了问题: 1. **设置请求头**: 在发送POST请求前,需要设置Content-Type头,告诉服务器数据的...

    ajax解决乱码问题

    ### 二、使用AJAX解决乱码问题的方法 #### 1. 设置正确的编码格式 在ASP.NET中,可以使用`&lt;globalization&gt;`标签在Web.config文件中设置请求和响应的编码格式。例如: ```xml requestEncoding="utf-8" ...

    c# ajax post数据乱码解决

    ### 三、其他可能的原因及解决方法 除了上述配置之外,还有其他一些可能导致乱码的原因: 1. **客户端编码设置**:确保客户端JavaScript代码中发送请求时使用的编码与服务器端一致。 在提供的示例代码中,可以...

    Struts框架下Ajax发送中文乱码问题的解决

    总结来说,解决Struts框架下Ajax发送中文乱码问题的关键在于: 1. 确保Ajax请求时设置正确的`Content-Type`,以UTF-8编码发送数据。 2. 在Struts配置文件中配置`CharacterEncodingFilter`或在Action中手动设置请求...

    struts中文乱码问题解决详细步骤

    解决这个问题通常涉及到编码设置的调整,下面将详细介绍两种方法来解决Struts中的中文乱码问题。 **方法一:配置Filter** 1. **添加过滤器**:首先,我们需要在Web应用的`web.xml`文件中添加一个`...

    PHP Ajax中文乱码问题解决方法

    是因为XMLHttp在处理返回的responstText的时候把responstBody按UTF-8编码进行解码的,如果服务器端送出的数据流的确是UTF-8编码,那么中... 您可能感兴趣的文章:php生成二维码时出现中文乱码的解决方法PHP中使用file

    ajax乱码解决方案

    **Ajax 乱码解决方案** Ajax 乱码问题在开发Web应用程序时经常遇到,尤其是在涉及到不同编码格式时。本文将深入探讨Ajax与字符编码相关的技术细节,并提供几种有效的解决策略。 首先,JavaScript处理字符的方式是...

    ajax到servlet乱码解决

    AJAX 到 Servlet 乱码解决方案 在 Web 开发中,使用 AJAX 通过 URL 传参数给 Servlet 时,经常会遇到乱码问题,即使使用了统一的字符编码也没用。下面我们来探讨这个问题的解决方案。 问题描述 当我们使用 AJAX ...

    AJAX中文乱码解决

    本教程将详细介绍如何解决AJAX中文乱码问题,以在Windows Server 2008环境下为例,但原理适用于其他操作系统。 首先,我们需要理解乱码产生的原因。乱码通常是由字符编码不一致引起的。服务器和客户端之间传输的...

    JQuery AJAX 中文乱码问题解决

    解决JQuery AJAX中文乱码问题的步骤如下: 1. **设置请求编码**:在发送AJAX请求时,确保请求头中的`Content-Type`设置为`application/x-www-form-urlencoded;charset=UTF-8`。对于JQuery,你可以这样做: ```...

Global site tag (gtag.js) - Google Analytics