传500个中文到服务器端乱码问题解决
传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; }}
页:
[1]