传500个中文到服务器端乱码问题解决,挺有意思的东西,ajax传送默认是utf-8所以js就不设置编码了,注意点需要对&,+等一些特殊符号进行转码,可以用类似replace的方法进行转换。不过写replace进行转换可能有一点点疑惑,具体可以参考java的replace方法,呵呵。
function createXMLHttpRequest() { var xmlHttp; if (window.ActiveXObject) { xmlHttp = new ActiveXObject("Microsoft.XMLHTTP"); } else if (window.XMLHttpRequest) { xmlHttp = new XMLHttpRequest(); } return xmlHttp; } function startRequest(url,parameters,callback) { var xmlHttp = createXMLHttpRequest(); try { xmlHttp.onreadystatechange = function() { if (xmlHttp.readyState == 4) { if (xmlHttp.status == 200 || xmlHttp.status == 0) { text = xmlHttp.responseText; callback(text); } } }; xmlHttp.open("POST",url, true); xmlHttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); xmlHttp.send(parameters); } catch (exception) { alert("xmlHttp Fail"); } } function replace(parameter) { var str = parameter.replace(/\&/g, 'and').replace(/\%/g, 'mod').replace( /\+/g, 'add'); return str } function getValue(){ var value="我"; for(var i=0;i<501;i++){ value=value+'我'; } return value } function test() { var url="AJAXDo.action"; paremeters="type="+replace(getValue()); startRequest(url,paremeters,callback); } function callback(text){ alert(text); }
public class AjaxService extends BaseService
{
private static final long serialVersionUID = 1L;
public String test()
throws Exception
{
String type = request.getParameter("type");
response.setContentType("text/html charset=UTF-8");
response.setCharacterEncoding("UTF-8");
if (type == null)
{
response.getWriter().println("添加失败");
}
else
{
System.out.println(type);
response.getWriter().println("添加成功");
}
return null;
}
}