`
屌丝学Java
  • 浏览: 29826 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

$.post中文乱码

    博客分类:
  • jsp
 
阅读更多
前段时间写JSP,使用AJAX以POST方式提交数据,如果是中文字符提交就会乱码,后来写ASP时用到AJAX以POST方式提交数据,中文一样是乱码。搜索一下相关资料,问题应该是提交数据时是以UTF-8编码提交,所以接收时如果使用GB2312或者其它中文编码的话就会乱码。

使用GET方式提交数据的时候,中文问题很好解决,setRequestHeader("Content-Type","text/html; encoding=gb18030")就可以了。但这个方法在POST方式中却不起作用。大家都知道GET方式提交数据有长度限制,有时我们必须使用 POST方式来提交数据。

对于使用POST,JSP的解决方法如下:
使用escape(或encodeURI,两个函数都是JavaScript的函数,功能基本相同,可以查一下相关的帮助),但要使用两次,这个是关键。

初始页面内容如下(hello.jsp):
Java代码  收藏代码
<%@ page language="java" import="java.util.*" pageEncoding="GB18030"%>  
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">  
<html>  
<head>  
<title>AJAX提交页面</title>  
<meta http-equiv="Content-Type" content="text/html; charset=GB18030">  
<script type="text/javascript">  
function justdo(){  
    var post = "name=王力猛&email=wallimn@sohu.com&bokee=http://wallimn.bokee.com";  
    post = encodeURI(post);  
    post = encodeURI(post);    //两次,很关键  
    var xmlObj = new ActiveXObject("Msxml2.XMLHTTP");  
    var URL = "act.jsp";    //文件名需要调整成测试时的相应位置  
    xmlObj.open("POST",URL,true);  
    xmlObj.setRequestHeader("Cache-Control","no-cache");  
    xmlObj.setRequestHeader("Content-Type","application/x-www-form-urlencoded;");  
    xmlObj.send(post);    //注意:POST方式,使用这个来发送内容  
}  
</script>  
</head>   
<body>  
<input type="button" value="提交" onclick="justdo()" />  
</body>  
</html>  



Ajax请求处理页面(act.jsp)的内容如下:
Java代码  收藏代码
<%@ page language="java" import="java.util.*" pageEncoding="GB18030"%>  
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">  
<%@page import="java.net.URLDecoder"%>  
<html>  
<head>  
<title>ajax deal</title>  
<meta http-equiv="pragma" content="no-cache">  
<meta http-equiv="cache-control" content="no-cache">  
<meta http-equiv="expires" content="0">  
</head>  
<body>  
<%  
//遍历输出参数内容。  
for (Enumeration e = request.getParameterNames(); e.hasMoreElements();) {  
    String h = (String)e.nextElement();  
    String v = request.getParameter(h);  
    String mm = java.net.URLDecoder.decode(v, "UTF-8");  
    System.out.println("请求参数: " + h + " = " + mm);  
}  
%>  
</body>  
</html>  


分析:当调用request.getParameter()函数时,会自动进行一次URI的解码过程,调用时内置的解码过程会导致乱码出现。而URI编码两次后,request.getParameter()函数得到的是原信息URI编码一次的内容。再用可控的解码函数 java.net.URLDecoder.decode()就可解出原始的正确的信息。
分享到:
评论

相关推荐

    ajax提交,后台中文乱码解决

    在IT领域,尤其是在Web开发中,处理中文字符时经常遇到的一个问题是中文乱码。这个问题尤其在使用Ajax进行异步数据提交时更为突出。Ajax(Asynchronous JavaScript and XML)是一种在无需重新加载整个网页的情况下,...

    解决了中文乱码的http的get和post请求demo

    2. **POST请求中的中文乱码**: POST请求中,数据通常放在请求体中。Java的HttpURLConnection或HttpClient类都可以处理POST请求。在使用HttpURLConnection时,需要设置请求头`Content-Type`为`application/x-...

    JQuery中Ajax的Post提交在IE下中文乱码的解决方法

    引言: 在JQuery的Ajax POST请求中,进行请求,其中的中文在后台,显示为乱码,该如何解决呢? 问题的引入: 代码如下: var regid = $(‘#oregion’).combobox(‘getValue’); //var sname = $(‘#sname’).val(); ...

    POST中文参数乱码问题解决.txt

    C++post请求的时候中文参数,导致传到服务器乱码,这种异常的处理。也就是如何解决POST中文参数 解释可以参考https://blog.csdn.net/gemo/article/details/8468311 这里提供成功代码

    Indy10.6和OpenSSL解决D7下GET&POST;乱码下载

    "3,indy10.6D7下Get&Post中文乱码解决.txt"是针对D7环境下Indy10.6 GET和POST请求中文乱码问题的解决方案。这个问题通常由字符编码不一致导致,例如服务器和客户端之间没有统一的编码标准,或者在转换过程中没有...

    JQuery的Ajax中Post方法传递中文出现乱码的解决方法

    总结来说,处理JQuery Ajax POST中文乱码问题,主要有两个策略: 1. 对于前端JavaScript中的参数,可以使用`escape()`函数进行编码,然后在服务器端接收后解码,但通常这不是必需的,因为大多数现代浏览器和服务器...

    c# ajax post数据乱码解决

    在开发过程中,尤其是在使用C#与ASP.NET进行Web开发时,经常会遇到客户端通过Ajax向服务器端发送Post请求后,服务器端接收到的数据出现乱码的问题。这种情况不仅影响用户体验,也可能会导致程序逻辑出现问题。本文将...

    get、post请求中文乱码处理方式一

    本文将详细阐述GET和POST请求中文乱码的处理方式,以帮助开发者解决这类问题。 首先,我们需要了解为什么会出现中文乱码。在HTTP请求中,数据通常是按照ASCII编码进行传输的,而中文字符通常使用UTF-8或其他多字节...

    xe的TIdTCPClient中文乱码问题

    TIdTCPClient中文乱码问题 我在进行indy10.5.7这个版本进行idTCPClient及idTCPServer进行编程时同样汉字收发时会产生乱码,我在单元的里引用了 HTTPApp 单元, 在发的时候这样写IdTCPClient.IOHandler.WriteLn...

    ASP.NET中Request.Form中文乱码的解决方法

    标题中的“ASP.NET中Request.Form中文乱码的解决方法”直指一个常见的编程难题:当用户通过表单提交包含中文字符的数据时,服务器端接收到的数据可能会出现乱码。这种情况通常发生在不同的网页编码格式之间交互时,...

    extjs 前后台交互参数出现中文乱码问题的解决方法

    ### extjs前后台交互参数出现中文乱码问题的解决方法 #### 问题背景与原因分析 在使用MyEclipse开发工具进行Web应用开发时,尤其是采用ExtJS框架结合Ajax技术进行前后端数据交互的过程中,可能会遇到一个常见的...

    jquery向.ashx文件post中文乱码问题的解决方法

    以下是关于解决jquery向.ashx文件post中文乱码问题的详细知识点。 首先,从环境中可以看到,开发者使用的是Visual Studio 2005,并且由于未安装SP1补丁,无法创建Web应用程序,因此只能创建网站。使用的jquery版本...

    post模拟提交文件中文乱码的问题处理.rar

    5. **批处理文件处理**:提供的资源中包含了批处理文件(post模拟提交文件中文乱码的问题处理.bat),这可能是一个解决此问题的示例脚本。批处理文件可以用来自动化上述的一些步骤,比如预先处理文件名和数据编码。 ...

    解决boa服务器get/post请求中文乱码问题

    本主题聚焦于"boa服务器get/post请求中文乱码问题",并提及了sqlite3数据库处理中文乱码的情况。以下将详细介绍这两个方面的知识点。 1. Boa服务器与HTTP请求中文乱码: Boa服务器是一个轻量级的Web服务器,适用于...

    乱码问题的解决

    post 方法传参乱码是由于服务器是不解析的,请求体是直接封装在 request 对象里面的。解决方法是设置 request 的编码,可以改变 post 参数的编码。 三、解决方法 1. 设置页面编码 设置页面编码为 utf-8,以便正确...

    JSP中文乱码解决集锦

    在开发Java Web应用时,JSP中文乱码是一个常见问题,主要是由于字符编码不一致导致的。以下是针对这个问题的详细解析和解决方案: 1. **JSP页面编码不一致**: - JSP页面中,编码设置通常包含在两处:`...

    JAVA POST与GET数据传递时中文乱码问题解决方法

    跟大家一样遇到了中文字符集乱码问题,为了大家能少走一些弯路,所以在此分享一下即简单又实用的解决方法。 1. POST 数据传递 接收页 代码如下: &lt;&#37;@ page language=”java” import=”java.util.*” ...

    ajax与开发工具InterlliJ开发工具

    两者的主要区别在于,`$.get()`通常用于查询操作,其数据以URL参数的形式传递,而`$.post()`则用于提交数据,适合更新操作。`$.get()`方式的数据量有限且可能被缓存,安全性较低,而`$.post()`方式则能传输更多数据...

Global site tag (gtag.js) - Google Analytics