`
heimuad
  • 浏览: 297533 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

ajax GET方式提交,中文参数乱码的问题zz

阅读更多

最近在研究AJAX是,自己做了一个程序测试,发现在使用get方式提交时,如果参数中有中文的话,会出现乱码问题,而且取回的XMLHttpRequest.resopnseText中如果有中文,将其值在页面上显示后也是乱码。Google一下,发现大多是针对post方式提交的解决办法,

于是自己通过查看别人的文章,下来后自己调试,解决了get方式提交中文参数乱码的问题:

我的环境是表单页面index.html的编码是UTF-8:下面是我的代码:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <title>Demo1.html</title>
 
    <meta http-equiv="description" content="this is my page">
    <meta http-equiv="content-type" content="text/html; charset=UTF-8">
  <!-- HTTP 1.1 -->
        <meta http-equiv="Cache-Control" content="no-store"/>
        <!-- HTTP 1.0 -->
        <meta http-equiv="Pragma" content="no-cache"/>
        <!-- Prevents caching at the Proxy Server -->
        <meta http-equiv="Expires" content="0"/>
    <script language="javascript">
     var httpRequest=null;
     function createHttpRequest() {
      if(window.XMLHttpRequest) {
       return new XMLHttpRequest();
      }
      else if(window.ActiveXObject) {
       request = new ActiveXObject("Microsoft.XMLHTTP");
       if(!request) {
        request = new ActiveXObject("Msxml2.XMLHTTP");
       }
       return request;
      }
     }
     
     function ok() {
      var url = "handel.jsp?name="+encodeURIComponent(document.form1.name.value);
      httpRequest = createHttpRequest();
      httpRequest.onreadystatechange = aa;
      httpRequest.open("GET",url,true);
      httpRequest.send(null);
     }
     
     function aa(){
      if(httpRequest.readyState == 4) {
       if(httpRequest.status == 200) {
        document.getElementById("hh").innerText = httpRequest.responseText;
       }
      }
     }
    </script>
  </head>
  <body>
    <form name="form1">
     <input type="text" size="24" name="name">
     <input type="button" value="提交" onclick="ok()"><br>
     你输入了:<textarea rows="3" cols="20" readonly id="hh"></textarea> 
    </form>
  </body>
</html>

 

在构造url是用javascript自带的encodeURIComponent方法将参数进行编码,下面是我的代码

      var url = "handel.jsp?name="+encodeURIComponent(document.form1.name.value);
      httpRequest = createHttpRequest();
      httpRequest.onreadystatechange = aa;
      httpRequest.open("GET",url,true);
      httpRequest.send(null);

在目的地的handel.jsp页面(该页面显示编码也是UTF-8)上,先用iso-8859-1将request.getparameter()方法取回的参数值,转成字节串,

然后在用UTF-8将字节串转成字符串,就好了,下面是handel.jsp的代码:

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%
String name = request.getParameter("name");
byte[] b = name.getBytes("iso-8859-1");
for(int i=0;i<b.length;i++) {
 System.out.println(b[i]);
}
System.out.println("name:"+name);
System.out.println(new String(b,"UTF-8"));
response.setContentType("text/plain");
response.setHeader("Cache-Control","no-cache");
response.setHeader("Charset","UTF-8");
out.println("Welcome "+name);
%>

为了解决返回值XMLHttpRequest.resopnseText中文乱码的问题,需要设置下面这句话:

response.setHeader("Charset","UTF-8");

分享到:
评论
1 楼 wazj0517 2008-06-03  
兄弟,你解决了我一样的问题!!

相关推荐

    ajax get请求中文参数乱码解决

    在进行Web开发时,我们经常会遇到Ajax GET请求发送中文参数时出现乱码的问题。这个问题主要源于HTTP协议在处理非ASCII字符时的编码不一致。在本文中,我们将深入探讨这个问题,以及如何通过不同的方法来解决它。 ...

    JSP中 ajax的get请求的中文乱码问题的解决方法.pdf

    在JSP中,当使用Ajax进行GET请求时,可能会遇到中文乱码的问题。这通常是由于URL编码不匹配或处理不当导致的。以下是一些解决这个问题的关键知识点和步骤: 1. **URL编码问题**: URL编码是一种标准,用于将特殊...

    使用prototype.js发送ajax get请求中文参数乱码解决

    在处理中文参数时,尤其是在使用Ajax的GET请求时,可能会遇到中文乱码的问题。这是因为浏览器、服务器和JavaScript之间的编码处理不一致所导致的。本文将深入探讨这个问题,并提供解决方案。 首先,我们需要了解...

    Ajax中文乱码问题解决方案

    本文将深入探讨Ajax中文乱码问题的成因,并提供一系列解决方案。 **一、问题原因** 1. **编码格式不一致**:服务器与客户端(浏览器)之间使用的字符编码格式不同,例如服务器使用GBK编码,而浏览器使用UTF-8编码...

    ajax传递中文参数乱码解决办法

    在使用AJAX向服务器发送请求时,如果请求参数中包含中文字符,可能会因为编码方式不一致导致接收方解析出错,从而出现乱码现象。这主要是由于客户端(如浏览器)和服务器端默认采用的字符集可能不同所导致的。 ####...

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

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

    Ajax使用POST提交中文乱码问题.docx

    总结来说,解决Ajax POST提交中文乱码问题的关键在于前端编码两次并确保后端使用正确的解码方式。同时,服务器端页面的编码设置也很重要,如`&lt;%@ page pageEncoding="GB18030"%&gt;`确保了JSP页面的编码一致性。在实际...

    ajax提交,后台中文乱码解决

    中文乱码问题在Web开发中是一个常见的挑战,特别是在使用Ajax进行异步数据提交时。通过正确使用URL编码或选择合适的参数传递方式,可以有效地解决这一问题。在实际应用中,开发者应当根据具体情况选择最合适的方法,...

    ajax快速解决参数过长无法提交成功的问题

    在ajax中使用post方法,用常规的参数格式:param1=a1&param2=a2 ,当参数长度过长时,依然提交不成功。比如我们经常这样写一个ajax的post请求: $.ajax({ type: "post", // post or get contentType:"application...

    jsp中 ajax的get请求的中文乱码问题的解决方法.docx

    在开发Web应用时,我们经常会遇到中文乱码问题,特别是在使用AJAX进行GET请求时。JSP中的AJAX GET请求的中文乱码问题主要是由于URL编码格式不匹配导致的。以下是一些解决此问题的关键点和步骤: 1. **URL编码格式**...

    ajax提交中文乱码解决方法

    为了解决AJAX提交中文乱码的问题,可以从以下几个方面入手: ##### 1. 客户端编码处理 - **使用`URLEncoder`编码**:在发送请求之前,可以先使用Java的`URLEncoder.encode()`方法将中文字符串进行编码,然后再发送...

    Ajax 中文乱码问题

    ### Ajax 中文乱码问题详解 #### 一、引言 在进行Web开发的过程中,我们经常需要使用Ajax技术来实现异步数据交换。然而,在处理包含中文字符的数据时,经常会遇到中文乱码的问题。这个问题主要源于不同的编码方式...

    ajax提交中文到servlet

    本文将深入探讨“ajax提交中文到servlet”的相关知识点,以解决在异步传输过程中处理中文字符的问题。 一、Ajax基础 Ajax的核心是通过JavaScript创建XMLHttpRequest对象,它允许浏览器在不重新加载整个网页的情况下...

    ajax POST 与GET提交的区别

    ### AJAX POST 与 GET 提交的区别详解 #### 一、GET与POST基本概念及应用场景 在探讨AJAX中GET和POST的区别之前,我们先来了解一下这两种请求方式的基本概念。 **GET**请求通常用于获取资源信息,它将参数拼接到...

    j2ee21:ajax01:get提交、post提交(完成用户名搜索),两者的区别(中文乱码问题、缓存问题)

    在这个教程中,我们将深入探讨AJAX的GET和POST提交方式,以及它们在实现用户名搜索功能时的区别,同时也会解决可能出现的中文乱码问题和缓存问题。 首先,GET和POST是HTTP协议中的两种主要请求方法,它们在AJAX中...

    extjs 前后台交互参数出现中文乱码问题的解决方法

    ### extjs前后台交互参数出现中文乱码问题的解决方法 #### 问题背景与原因分析 在使用MyEclipse开发工具进行Web应用开发时,尤其是采用ExtJS框架结合Ajax技术进行前后端数据交互的过程中,可能会遇到一个常见的...

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

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

    ajax提交乱码

    在IT领域,特别是Web开发中,遇到“Ajax提交乱码”的问题是非常常见的,尤其是在处理中文或其它非英文字符集时。根据给定的文件信息,我们可以深入探讨如何使用Jquery来解决这一问题。 ### Ajax提交乱码问题的本质 ...

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

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

Global site tag (gtag.js) - Google Analytics