- 浏览: 74365 次
- 性别:
- 来自: 广州
-
文章分类
最新评论
开发项目用Ajax的Post方法提交信息到请求的servlet,输出遇到中文乱码,纠结了好几天,总结了网络上很多高手的心得,用了两步解决了乱码:
- 在JS端,对提交的字符串进行两次编码:
<%@page contentType="text/html" pageEncoding="gbk"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=gbk"> <title>JSP Page</title> <script type="text/javascript"> var req; function validate() { //获取表单提交的内容 var idField = document.getElementById("userName").value; //要发送的字符串数据 var content = "id=hello&message=" + idField + "&say=我是帅哥"; //重点:对content含中文字符的字符串进行两次编码 content = encodeURI(content); content = encodeURI(content); var url = "validate.do"; //创建一个XMLHttpRequest对象req if(window.XMLHttpRequest) { //IE7, Firefox, Opera支持 req = new XMLHttpRequest(); }else if(window.ActiveXObject) { //IE5,IE6支持 req = new ActiveXObject("Microsoft.XMLHTTP"); } req.open("post", url, true); req.setRequestHeader("Content-Type","application/x-www-form-urlencoded"); req.onreadystatechange = callback; //send函数发送请求,参数 req.send(content); } function callback() { //alert(req.readyState); //alert(req.status); if(req.readyState == 4 && req.status == 200) { //alert(req.status); //alert(req.responseText); var check = req.responseText; show (check); } } function show(str) { document.getElementById("info").innerHTML = str; } </script> </head> <body> <h1>Test Ajax</h1><p> <form action="" method="get" name="form"> <br> 输入用户名: <input type="text" size="10" maxlength="8" id="userName" name="name" onblur="validate()"> <span id="info"></span> <br> 输入商品名: <input type="submit" name="refer" > </form> </body> </html>
- 在servlet端,对接收的数据的进行一次解码:
package com.model; import java.io.IOException; import java.io.PrintWriter; import java.util.Enumeration; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.net.URLDecoder; /** * * @author Gavin */ public class DoAjaxServlet extends HttpServlet { protected void processRequest(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html;charset=gbk"); request.setCharacterEncoding("gbk"); PrintWriter out = response.getWriter(); try { response.setHeader("Cache-Control", "no-store"); response.setHeader("Pragma", "no-cache"); response.setDateHeader("Expires", 0); //这里有个小问题:如果写成String put = null;将会输出一个null后面再加上增加的字符 String put = ""; for(Enumeration<String> e = request.getParameterNames(); e.hasMoreElements(); ) { String h = (String) e.nextElement(); String c = (String)request.getParameter(h); put += c; } //重点在这里,对接受到的信息进行解码 String putDecoded = java.net.URLDecoder.decode(put,"utf-8"); System.out.println(pute); out.write("message is:" + putDecoded); } finally { out.close(); } } @Override protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { processRequest(request, response); } @Override protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { processRequest(request, response); } @Override public String getServletInfo() { return "Short description"; }// </editor-fold> }
发表评论
-
jdbc连接SQL server2000
2010-10-22 13:16 9501.假设SQL数据库“test”下有表“PRESON” ... -
javac联合编译
2010-09-14 20:25 1937假如在目录“D:\project\src\com\scau”下 ... -
常用SQL语句(在mysql上测验通过)
2010-09-11 15:59 1020本文讲解《数据库处理——基础、设计与实现》第30页中3个表的创 ... -
一些编程常用的CMD命令
2010-09-09 00:05 958echo %path% 查看系统path环境变量的值 n ... -
ERROR 2003 (HY000): Can't connect to MySQL server on 'localhost' (10061)
2010-09-08 23:49 12527我的操作系统是WIN7旗舰版,每次开机,我可以在任务管理器里看 ... -
JDK工具 javac命令学习
2010-09-06 22:02 1106JDK工具 javac命令详解 SCJP必考的内容, ... -
jdk+tomcat安装以及配置
2010-09-06 21:57 2017安装配置JDK:其实就是 ... -
修改JSPsmartUpload组件实现无中文乱码上传下载
2010-08-26 09:26 2588使用JSPsmartUpload组件上传文件,文件名出现中文字 ... -
dom4j--XPath获取特定节点应用一例
2010-08-24 16:34 2790xml文件如下: <?xml version=&qu ... -
Ajax通过post方法向Servlet提交信息
2010-08-19 22:00 4659<script type="text/java ... -
JavaScript检查输入框是否有值再激活提交按钮的方法
2010-08-15 11:16 2497今天,想做一个“JavaScript检查输入框是否有值再激活提 ... -
dom4j写出中文乱码解决方法
2010-08-14 12:43 2294今天,学习了DOM4J,发现在eclipse中通过XMLWri ... -
XML基本语法介绍
2010-08-13 13:27 8404第一部分:文档声明 ... -
JSP+Servlet+Ajax实现后台异步检验用户信息实例
2010-08-12 21:24 21992下面介绍JSP前台表单内容通过Ajax异步提交到后台Servl ... -
java中实例化一个类的一种另类方法
2010-08-11 17:23 1573今天学习J2SE,学习了另一种类的构造方式,在调试的过程中有自 ...
相关推荐
在开发过程中,尤其是在使用C#与ASP.NET进行Web开发时,经常会遇到客户端通过Ajax向服务器端发送Post请求后,服务器端接收到的数据出现乱码的问题。这种情况不仅影响用户体验,也可能会导致程序逻辑出现问题。本文将...
在IT行业中,Ajax(Asynchronous JavaScript ...通过理解和应用这些解决方案,开发者可以有效地避免和解决Ajax请求中的中文乱码问题,从而提高用户体验。记住,良好的编码习惯和对字符编码的理解是解决此类问题的关键。
### AJAX在POST中文时解决乱码的方法 #### 一、问题背景 在使用AJAX进行数据请求时,尤其是在处理中文字符的过程中,经常会遇到一个常见问题:即通过AJAX请求得到的`responseText`中的中文字符出现乱码。这个问题...
### AJAX提交中文乱码解决方法 在Web开发中,AJAX(Asynchronous JavaScript and XML)是一种在无需重新加载整个网页的情况下,能够更新部分网页的技术。它通过JavaScript发起异步请求,与服务器进行数据交换,从而...
**Ajax 乱码解决方案** Ajax 乱码问题在开发Web应用程序时经常遇到,尤其是在涉及到不同编码格式时。本文将深入探讨Ajax与字符编码相关的技术细节,并提供几种有效的解决策略。 首先,JavaScript处理字符的方式是...
本文将基于提供的文件信息,详细解析两种解决Ajax提交后台取值中文乱码的方法。 ### 方法一:使用URL编码 在第一个示例中,开发者通过调用`encodeURIComponent()`或`encodeURI()`函数对请求URL中的参数进行编码。...
在本文中,我们将深入探讨如何解决使用Ajax进行POST请求时出现的中文乱码问题。首先,我们要理解Ajax中文乱码的根源,它通常涉及到字符编码的不一致,尤其是在客户端与服务器之间的通信过程中。 Ajax(Asynchronous...
这个项目可能包含了用于模拟中文乱码问题的测试用例,以及对应的解决方法。通过运行和分析这些测试,开发者可以更好地理解如何在实际项目中解决此类问题。 总的来说,解决Ajax中文乱码问题的关键在于明确和统一字符...
2.解决JQuery的Ajax中Post方法传递中文出现乱码的方法: a.使用JavaScript的escape()函数处理:在传递中文参数之前,使用escape()函数对参数进行处理。这样可以将中文字符转换为十六进制数,避免了在传输过程中...
例如,我们使用 AJAX 通过 URL 传递中文参数 "中文测试" 给 Servlet,Servlet 在接收参数时却变成了乱码 "�������"。这使得我们的应用程序无法正确地处理中文参数。 解决方案 要解决这个问题,我们可以从两...
AJAX在Post中文的时候乱码的解决方法 AJAX(Asynchronous JavaScript and XML)是一种在Web开发中用于实现异步数据交换的技术,但是在使用AJAX进行POST操作时,遇到中文乱码的问题是一种常见的现象。这种问题的出现...
总结来说,解决Struts框架下Ajax发送中文乱码问题的关键在于: 1. 确保Ajax请求时设置正确的`Content-Type`,以UTF-8编码发送数据。 2. 在Struts配置文件中配置`CharacterEncodingFilter`或在Action中手动设置请求...
在进行Web开发时,我们经常会遇到Ajax GET请求发送中文参数时出现乱码的问题。这个问题主要源于HTTP协议在处理非ASCII字符时的编码不一致。在本文中,我们将深入探讨这个问题,以及如何通过不同的方法来解决它。 ...
通过以上介绍的方法,我们可以有效地解决Ajax请求过程中可能出现的中文乱码问题。关键在于确保数据在发送和接收过程中的编码一致性。希望本文能帮助开发者更好地理解和处理这类问题,提升用户体验。
- **POST**: 同样存在乱码问题,可以通过设置Content-Type和服务器端编码来解决。 7. **实现细节**: - **GET**: 参数直接拼接在URL后面,如 `http://example.com?name=value`。 - **POST**: 需要通过设置Content...
在使用Ajax进行POST提交时,中文字符可能会遇到乱码问题,这是因为数据在传输过程中编码与解码不匹配导致的。Ajax以UTF-8编码发送数据,但服务器端可能使用了不同的字符集(如GB2312)来解析,这就产生了乱码。本文...
本文将深入探讨Ajax乱码问题的成因及其解决方案。 首先,我们需要了解JavaScript和Unicode的关系。JavaScript内部处理字符时,采用的是Unicode编码,这是一种包含几乎全球所有语言字符的通用编码标准。而UTF-8是一...
在Web开发中,Ajax(Asynchronous ...总结,解决Ajax乱码问题主要涉及数据编码、请求头设置和服务器端解码,而页面传值则需根据需求选择适当的方法。理解并熟练运用这些技巧,能显著提升Web应用的性能和用户体验。
#### 三、解决Ajax乱码的方法 1. **GET请求乱码解决方案**: - 客户端在发送GET请求前,可以使用`encodeURIComponent`函数对参数进行编码,确保参数的正确传输。 - 服务器端通过`request.getParameter()`获取到...