index.jsp:
-----------------------<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<script type="text/javascript">
var xmlHttp;
function createXMLHttpRequest()
{
  if(window.XMLHttpRequest)
   {
    xmlHttp =new XMLHttpRequest();
   }else if(window.ActiveXObject)
   { 
    xmlHttp =new ActiveXObject("Microfost.XMLHTTP");
   }
}

 function send_httpXmlhttpRequest()
 {
     createXMLHttpRequest();
   var url="a.jsp?username=乱码";
        xmlHttp.open("GET",url,true);
      xmlHttp.onreadystatechange=Callback;
    xmlHttp.send(null);
 }
  
  function Callback()
  {
    if(xmlHttp.readyState==4)
    {
      if(xmlHttp.status==200)
       {
       document.getElementById("span").innerHTML=xmlHttp.responseText;
       }
    }
  }
</script>
</head>
<body>
<input type="button" onclick="send_httpXmlhttpRequest();" value="点击" />
<span id="span"></span>
</body>
</html>a.jsp:
-------------------
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%@page import="java.net.URLDecoder"%>
<%
request.setCharacterEncoding("utf-8");
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
</head>
<body>
<%
out.println(new String(request.getParameter("username").getBytes(
"iso-8859-1"), "utf-8"));
out.println(URLDecoder.decode(request.getParameter("username"),
"utf-8"));
%>
</body>
</html>

解决方案 »

  1.   

    请在补充一下:说明乱码的原理 为什么写  
    写2次他 
        url = encodeURI(url);
       url = encodeURI(url);out.println(new String(request.getParameter("username").getBytes(
    "iso-8859-1"), "utf-8"));他乱码out.println(URLDecoder.decode(request.getParameter("username"),
    "utf-8"));他不乱码  我要写一次encodeURI(url)正好得到的乱码 结果相反 为什么啊 
      

  2.   

    去掉网页乱码的三句代码 <%@page contentType="text/html;charset=gb2312"%>
    <%@page pageEncoding="gb2312"%>
    <%request.setCharacterEncoding("gb2312");%>
      

  3.   

    一个Ajax。没必要用这种了。麻烦、一不小心。出现错误。很难找到。你去导入jquery包。用他得Ajax。方便快捷。声明Post方式。就不会出现乱码了
      

  4.   

    我们这不是刚学Ajax吗 要从基础起步啊 在说我们Jquery还没学那  请你以解决问题的态度来说 不要乱说
      

  5.   

    乱码问题建议去查一下字符编码相关的知识。String en = URLEncoder.encode("=中文+/", "UTF-8");
    String de = URLDecoder.decode(en, "UTF-8");

    System.out.println(en);
    System.out.println(de);
    %3D%E4%B8%AD%E6%96%87%2B%2F.
    =中文+/.把要传递的中文值用URLEncoder编码一下,服务端接收到后再进行解码,这样用get方式传递值的时候就不会出现中文乱码了。用base64也可以达到相应目的。
    out.println(new String(request.getParameter("username").getBytes(
    "iso-8859-1"), "utf-8"));他乱码out.println(URLDecoder.decode(request.getParameter("username"),
    "utf-8"));他不乱码  这个是因为你的网页默认使用GBK方式编码,跟系统有关。统一编码很重要。