AJAX提交数据: client: 使用POST方式 request.open("post",url,true|false); 提交参数时,中文参数要用userName = encodeURIComponent(userName)进行编码, 再用send("name="+userName)发送 server: request.setCharacterEncoding("UTF-8"); response.setContentType("text/html;charset=UTF-8"); String userName = request.getParameter("name"); //正确得到中文参数 client: 使用GET方式 var url = "reg/verify?userName="+encodeURIComponent("中文"); //同样中文要进行编码 request.open("post",url,true|false); 提交参数时,中文参数要用userName = encodeURIComponent(userName)进行编码, 再用send(null)发送 server: server处理方式同Form表单GET方式 Form表单提交: client: 使用POST方式 <form action="reg/verify method="post"> <input type="text" name="userName" /> <input type="submit" value="提交"/> </form> server: request.setCharacterEncoding("UTF-8"); response.setContentType("text/html;charset=UTF-8"); String userName = request.getParameter("name"); //正确得到中文参数 client: 使用GET方式 <form action="reg/verify method="get"> <input type="text" name="userName" /> <input type="submit" value="提交"/> </form> server: request.setCharacterEncoding("UTF-8"); //无论有没有该语句,都要进行重新解码编码 response.setContentType("text/html;charset=UTF-8"); userName = new String(userName.getBytes("ISO-8859-1"), "UTF-8"); //正确得到中文参数 使用<a href></a>提交方式:(不推荐使用) client: 使用<a href="reg/verify?userName=宁晓进">submit</a>提交方式, 原理:IE8、FF等浏览器发送请求前会用encodeURIComponent(userName)进行编码,但有些浏览器不会自动编码,服务器接收会出错,所以最好在发送中文等特殊字符前手动进行编码。 server: server处理方式同Form表单GET方式 |
|