网上搜索了一下这方面的资料,有些网友说是application/x-www-form-urlencoded编码的原因,不知道是否这个问题,谁会解决? 所有的程序我都是统一用gb2312或GBK 最简单的解决办法: 通常我们用servlet的时候接收参数的时候都是用gb2312或GBK 但在ajax的post方法里面就不行了 必须要这样: 如: //要传递的参数var queryString = "firstName=" + firstName + "&lastName=" + lastName+ "&birthday=" + birthday; //GET方式提交doRequestUsingGET() { createXMLHttpRequest(); var url = "GetAndPostExample?" + queryString + "&timeStamp=" + new Date().getTime(); xmlHttp.onreadystatechange = handleStateChange; xmlHttp.open("GET", url, true); xmlHttp.send(null);}//POST方式提交function doRequestUsingPOST() { createXMLHttpRequest(); var url = "GetAndPostExample?timeStamp=" + new Date().getTime(); xmlHttp.open("POST", url, true); xmlHttp.onreadystatechange = handleStateChange; xmlHttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); xmlHttp.send(queryString);} 当在servlet接收参数时,必须要这样: //当用POST方法时,一定要设置成utf-8,否则乱码String firstName = new String(request.getParameter("firstName").getBytes("ISO-8859-1"), "utf-8");//当用GET方法时,要设置成GB2312,否则乱码。String lastName = new String(request.getParameter("lastName").getBytes("ISO-8859-1"), "GB2312"); 这样,服务器端的程序就接收到表单上的中文字了....