在最近学习AJAX中,通过POST方式发送的数据在服务器端接收的时候通过检测,发现中文编码不能很好的正确读取,全是乱码。怎么解决这个问题,查询了一下,得知如下知识
Javascript默认编码方式Unicode,这样传递到服务器端的数据不能够正确读取,尽管采用Unicode解码,有些郁闷。采用了几种方式,无功。
在JAVA环境下解决这个问题,如下所示:
一。客户端获取的值使用 escape() JS函数进行编码
二。服务器端调用一个已经写好的函数进行解码操作,这个JAVA解码函数如下:
public static String unescape(String src){
StringBuffer tmp = new StringBuffer();
tmp.ensureCapacity(src.length());
int lastPos=0,pos=0; char ch;
while (lastPos<src.length()){
pos = src.indexOf("%",lastPos);
if (pos == lastPos){
if (src.charAt(pos+1)=='u'){
ch = (char)Integer.parseInt(src.substring(pos+2,pos+6),16);
tmp.append(ch);
lastPos = pos+6;
}else{
ch = (char)Integer.parseInt(src.substring(pos+1,pos+3),16);
tmp.append(ch);
lastPos = pos+3;
}
}else{
if (pos == -1){
tmp.append(src.substring(lastPos));
lastPos=src.length();
}else{
tmp.append(src.substring(lastPos,pos));
lastPos=pos;
}
}
}
return tmp.toString();
}
这样,服务器端就可以完好的解码过来。
-。提交数据页面
<!--必须指定输出语言格式,这是js获取的字符串的正确显示的关键-->
<%@ page language="java" contentType="text/html;charset=GBK"%>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>无标题文档</title>
<script language="javascript" src="js\request.js">
</script>
<script language="javascript">
function postData(){
var url = "testpage.jsp?name=yongboy&time=" + new Date().getTime();
var temp = "你好,测试中文中";
//下面这一步是必须!
var sinfo = escape( temp ); //获得输入的值
//提交数据
post_request( url, sinfo, "text" );
}
//AJAX出现结果,处理变化,在 js\request.js 中已经定义
function pageChange( responseText ){
var div = document.getElementById( "show" );
div.innerHTML = responseText;
}
</script>
</head>
<body>
<input type="submit" name="Submit" value="提交" onclick="postData()" />
<div id="show"></div>
</body>
</html>
二。后台处理数据页面
<!--注意,下面制定该页面的文字编码是必须的!-->
<%@page language="java" contentType="text/html;charset=GBK"%>
<!--引入命名空间-->
<%@ page import="handle.*" %>
<%
//清除缓存
response.setHeader("Cache-Control", "no-cache");
//读取从客户端发送过来的数据
StringBuffer sb = new StringBuffer();
BufferedReader br = request.getReader();
String len = null;
if( ( len = br.readLine() ) != null ){
sb.append( len );
}
String body = sb.toString();
//注:下面的步骤是必须的
body = StringUtil.unescape( body );
System.out.println( "body1 = " + body );
out.write( body );
%>
例子如下所示:
注:js\request.js 脚本文件那如下:
贴出来,为了记忆,也为了他人吧。
分享到:
相关推荐
在IT行业中,我们经常遇到各种数据传输的...综上所述,解决Ajax POST数据过长的问题需要结合服务器端配置调整、数据处理策略优化、传输技术选择等多个方面。在实际开发中,应根据项目需求和资源限制选择合适的方法。
本文将详细讲解如何解决C# Ajax Post数据乱码问题。 ### 一、理解问题根源 首先,我们需要了解为什么会出现乱码的情况。这通常是因为客户端和服务器端对于字符编码的理解不一致所导致的。具体来说,如果客户端使用...
以上就是关于"lotus domino AJAX post数据"这个主题的关键知识点,涵盖了前端与后端的交互、数据传输以及Lotus Domino环境下的处理逻辑。通过这些技术,开发者可以构建出更加动态和响应式的Web应用程序。
### AJAX POST 与 GET 提交的区别详解 #### 一、GET与POST基本概念及应用场景 在探讨AJAX中GET和POST的区别之前,我们先来了解一下这两种请求方式的基本概念。 **GET**请求通常用于获取资源信息,它将参数拼接到...
客户端提交的数据编码与服务器端接收并处理数据的编码不一致,导致乱码。 2. **HTTP请求头设置不当**:HTTP请求头中的`Content-Type`字段未正确设置字符集,导致服务器端无法按照正确的编码格式解析请求体。 3. **...
在本示例中,我们将深入探讨如何使用AJAX进行POST方法的数据传递,这对于前端与后端交互以及实现页面动态更新至关重要。** 首先,我们要明白AJAX的核心在于XMLHttpRequest对象,它是JavaScript内置的对象,允许我们...
在IT行业中,AJAX(Asynchronous JavaScript and XML)是一种用于创建动态网页的技术,它允许页面在不重新加载整个页面的情况下与服务器交换数据并更新部分网页内容。当涉及到大数据量处理时,AJAX就显得尤为重要,...
综上所述,"根据邮政编码加载地区信息"是利用Ajax技术实现的一个实用功能,涉及到前端交互、Ajax通信、数据解析等多个环节。理解并掌握这些知识点对于提升Web开发能力至关重要。在实际开发中,还需要结合具体项目...
"jquery ajax post提交数据乱码"这个问题主要是由于不同浏览器对数据编码方式的处理不一致造成的。当我们在Firefox下测试时,一切正常,但在Chrome或IE内核的浏览器上,用户可能会遇到乱码问题。这通常与页面的字符...
在使用Ajax进行POST提交时,中文字符可能会遇到乱码问题,这是因为数据在传输过程中编码与解码不匹配导致的。Ajax以UTF-8编码发送数据,但服务器端可能使用了不同的字符集(如GB2312)来解析,这就产生了乱码。本文...
这个步骤非常重要,因为如果不设置正确的`Content-Type`,服务器可能无法正确解析POST数据,尤其是在处理中文字符时可能会出现乱码。 #### 三、发送POST数据 设置好请求后,就可以使用`send`方法发送POST数据了: ...
### AJAX中实现交换数据 在当今的Web开发领域,AJAX(Asynchronous JavaScript and XML)是一种重要的技术,它允许网页在不重新加载整个页面的情况下,与服务器交换数据并更新部分网页内容。这种技术大大提升了用户...
在AJAX应用中,需要处理多种编码情况,例如,从表单中收集的数据通常是经过URL编码的,而XMLHttpRequest对象需要以正确的方式将这些数据编码后发送到服务器。服务器端需要解码这些数据以获取原始信息。处理编码问题...
在PHP端,接收POST数据时,需要使用`$_POST`数组。考虑到中文乱码,应确保数据接收后仍然是UTF-8编码: ```php $data = $_POST['param1']; // 检查并转换编码,确保是UTF-8 if (mb_detect_encoding($data, 'UTF-8',...
3. 数据传输:前后端交互时,确保请求和响应的数据编码与实际数据的编码方式一致,以防止乱码问题。 以上就是关于Ajax回调函数接收后台传输数据时设置编码方式的详细解释,遵循这些步骤,可以有效地避免编码问题...
首先,标题所涵盖的知识点包括:PHP、Ajax、数据提交、POST方法以及JSON格式数据的传递。在Web开发中,这都是十分基础而核心的概念。PHP是一种广泛使用在服务器端的脚本语言,用于开发动态网站。Ajax(Asynchronous ...
3. **请求体和响应体**:对于POST请求,`httpwatch`会展示发送的数据;而对于响应,它会展示服务器返回的具体内容,这对于调试提交的数据和验证服务器的响应是否正确非常有帮助。 4. **时间线**:工具会提供一个...
本文将深入探讨如何利用AJAX的GET和POST方法调用Servlet,从而实现数据的异步请求和响应。 #### 二、理解AJAX与Servlet的关系 AJAX是一种前端技术,而Servlet是Java后端处理请求的一种方式。在基于AJAX的Web应用中...