几乎学习什么技术都会牵扯到这个问题,中文乱码问题,在Ajax中也不例外,下面我们来说一下在Ajax中解决中文
乱码的问题。一般情况下会使用new String(text.getBytes("ISO-8858-1"),"UTF-8"),但是有时候这种方法在Ajax中不是通
用的,偶尔会出现问题,我们来说一种通用的终极解决办法。
首先是界面端的代码
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>ajax.html</title>
<script type="text/javascript" src="/Ajax/js/jquery-1.7.2.js"></script>
<script type="text/javascript">
function test(){
//1.获取文本框中的值
var value = $("#userName").val();
//2.将文本框中的内容发送给后台服务器
var url = "/Ajax/servlet/AjaxServlet?name="+value;
url = convertURL(url);
url = encodeURI(encodeURI(url));
$.get(url,null,callback);
}
//给url地址增加时间戳,骗过浏览器,不读去缓存
function convertURL(url){
var timestmp = (new Date()).valueOf();
//将时间戳追加到url上面
url = url+ "&t=" +timestmp;
return url;
}
function callback(data){//回调函数
//3.接受服务器的返回的数据
//alert(data);
//4.将结果显示在页面中
$("#div1").html(data);
}
</script>
</head>
<body>
用户名:<input type="text" id="userName" onblur="test();"/><span id="div1" style="color: red"></span>
<br/>
密码:<input type="password" id="password" /><br/>
邮箱:<input type="text" id="mail" />
</body>
</html>
请密切注意这一句
url = encodeURI(encodeURI(url));这句话把url 进行编码了两次,第一次把中文编码为utf-8的百分号的那种形式,然后再把这些
UTF-8编码完成的字节码再次进行编码,这样是对那些字符或者英文进行编码,绝对不会出现问题,下面我们再来看一下后台的servlet的代码
package com.bird.servlet;
import java.io.IOException;
import java.io.PrintWriter;
import java.net.URLDecoder;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class AjaxServlet extends HttpServlet {
/**
* 获取前台传递过来的参数
*/
private static final long serialVersionUID = 1L;
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
request.setCharacterEncoding("UTF-8");
response.setContentType("text/html;charset=UTF-8");
String name = request.getParameter("name");
// name = new String(name.getBytes("ISO-8859-1"),"UTF-8");
name=URLDecoder.decode(name, "UTF-8");
PrintWriter out = response.getWriter();
System.out.println(name);
if(name.equals("陈显鹭")){
out.println("用户名"+name+"已经存在");
}else{
out.println("用户名"+name+"不存在,可以使用");
}
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doGet(request, response);
}
}
注意这局name=URLDecoder.decode(name, "UTF-8");
当服务器得到数据的时候会进行一次转码,然后另外一次转码我们显示的指定转码的方式,这样就能介君乱码问题了。
分享到:
相关推荐
Ajax中文乱码问题解决方案
jquery+asp ajax 中文乱码问题解决文档
基于jsp后台java解决ajax异步传输中文乱码问题.
在js中对中文进行编码在java程序中进行解码即可解决中文乱码问题
今天终于解决了AJAX的中文乱码问题,写篇文章来帮助一下有同样问题的朋友们。我的开发环境:XP, eclipse,使用GB18030编码。 当遇到这个问题时,到网上去查了好多文章,提到几种解决方案,如:全站UTF-8编码;请求头...
java认证_Ajax中文乱码问题及解决方法.doc
主要解决在ajax中中文参数传递过程中,服务器接收到中文乱码的问题
ajax提交时,后台接收的参数出现中文乱码的解决方法,
struts中文乱码问题解决详细步骤(两种方法)
解决ajax乱码和页面传值问题,很深入啊
解决ajax异步提交后台取值中文乱码问题,提供两种解决方法
JSP中 ajax的get请求的中文乱码问题的解决方法.pdf 学习资料 复习资料 教学资源
解决AJAX中文乱码问题,本人亲测,测试系统WIN2008,其他系统请自行测试。包括源码和说明
NULL 博文链接:https://zmx.iteye.com/blog/643075
NULL 博文链接:https://cuiran.iteye.com/blog/443026
-include // 提供ajax接口 -model // 案例中实现的一个接口 -comm.js // javascript -config.js // js 配置页面 -config.inc.php // php 配置页面 -test.php // 测试页面 -do.php // 处理页面
AJAX中文问题分为两大类: 1)发送路径中的参数有中文,在服务器段接收参数值是乱码 例如: var url=”a.jsp?name=小李”; xmlHTTP.open (“post”,url,true); 解决办法: 利用javascript的提供的escape()或...
在使用myeclipse过程中,我使用ajax同步请求传递参数到后台却出现中文乱码,这是我解决问题的代码,希望对您有所帮助
JQuery AJAX 中文乱码问题解决,需要的朋友可以参考一下