ajax中文乱码解决方案
2014-07-15 21:49
323 查看
jax中要给服务器端传递中文时如果不进行设置,就会出现中文乱码问题。
本人尝试用web中解决中文乱码的方法来解决ajax中的中文乱码问题,
如在servlet中增加request.setCharacterEncoding("UTF-8"),还有增加过滤过滤,发现不起作用。不知道ajax内部对中文编码是怎么转换的。
最后查阅一些相关资料,得到两种比较好用的解决ajax中的中文乱码问题:
第一种方法:在客户端的javaScript中传递参数时,在参数值之前加上encodeURI()一次(记住这个地方是一次,下面第二种方法是用encodeURI()两次),然后在服务器端获得参数时对参数进行解码,如:Stringold = request.getParameter("name");
String name = newString(old.getBytes("iso8859-1"),"UTF-8");
示例:客户端的javaScript脚本
function verify(){
$.get("AJAXServer?name="+encodeURI($("#userName").val()),null,functioncallback(data){$("#result").html(data);});
}
服务器端代码:
protected void doGet(HttpServletRequestrequest, HttpServletResponse response) throws ServletException,IOException {
try{
response.setContentType("text/html;charset=utf-8");
PrintWriter out = response.getWriter();
Integer inte = (Integer)request.getSession().getAttribute("total");
int temp = 0;
if (inte == null) {
temp = 1;
} else {
temp = inte.intValue() + 1;
}
request.getSession().setAttribute("total",temp);
//1.取参数
String old =request.getParameter("name");
Stringname = newString(old.getBytes("iso8859-1"),"UTF-8");
//String name = URLDecoder.decode(old,"UTF-8");
//2.检查参数是否有问题
if(old == null || old.length() == 0){
out.println("用户名不能为空");
} else{
// String name = URLDecoder.decode(old,"UTF-8");
// byte[] by = old.getBytes("ISO8859-1");
// String name = new String(by,"utf-8");
// String name = URLDecoder.decode(old,"utf-8");
//3.校验操作
// String name = old;
if(name.equals("admin")){
//4。和传统应用不同之处。这一步需要将用户感兴趣的数据返回给页面段,而不是将一个新的页面发送给用户
//写法没有变化,本质发生了改变
out.println("用户名[" + name + "]已经存在,请使用其他用户名,如 " + name +temp);
} else{
out.println("用户名[" + name + "]尚未存在,可以使用该用户名注册");
}
}
} catch(Exception e){
e.printStackTrace();
}
}
第二种方法:在客户端的javaScript中传递参数时,在参数值之前加上encodeURI()两次(记住这个地方是两次,上面第一种方法是用encodeURI()一次),然后在服务器端获得参数时对参数进行解码,如:Stringold
= request.getParameter("name");
String name = URLDecoder.decode(old,"UTF-8");
客户端的javaScript脚本代码:
function verify(){
$.get("AJAXServer?name="+encodeURI(encodeURI($("#userName").val())),null,functioncallback(data){$("#result").html(data);});
}
服务器端代码:
protected void doGet(HttpServletRequestrequest, HttpServletResponse response) throws ServletException,IOException {
try{
response.setContentType("text/html;charset=utf-8");
PrintWriter out = response.getWriter();
Integer inte = (Integer)request.getSession().getAttribute("total");
int temp = 0;
if (inte == null) {
temp = 1;
} else {
temp = inte.intValue() + 1;
}
request.getSession().setAttribute("total",temp);
//1.取参数
String old =request.getParameter("name");
//String name = newString(old.getBytes("iso8859-1"),"UTF-8");
String name =URLDecoder.decode(old,"UTF-8");
//2.检查参数是否有问题
if(old == null || old.length() == 0){
out.println("用户名不能为空");
} else{
// String name = URLDecoder.decode(old,"UTF-8");
// byte[] by = old.getBytes("ISO8859-1");
// String name = new String(by,"utf-8");
// String name = URLDecoder.decode(old,"utf-8");
//3.校验操作
// String name = old;
if(name.equals("admin")){
//4。和传统应用不同之处。这一步需要将用户感兴趣的数据返回给页面段,而不是将一个新的页面发送给用户
//写法没有变化,本质发生了改变
out.println("用户名[" + name + "]已经存在,请使用其他用户名,如 " + name +temp);
} else{
out.println("用户名[" + name + "]尚未存在,可以使用该用户名注册");
}
}
} catch(Exception e){
e.printStackTrace();
}
}
本人尝试用web中解决中文乱码的方法来解决ajax中的中文乱码问题,
如在servlet中增加request.setCharacterEncoding("UTF-8"),还有增加过滤过滤,发现不起作用。不知道ajax内部对中文编码是怎么转换的。
最后查阅一些相关资料,得到两种比较好用的解决ajax中的中文乱码问题:
第一种方法:在客户端的javaScript中传递参数时,在参数值之前加上encodeURI()一次(记住这个地方是一次,下面第二种方法是用encodeURI()两次),然后在服务器端获得参数时对参数进行解码,如:Stringold = request.getParameter("name");
String name = newString(old.getBytes("iso8859-1"),"UTF-8");
示例:客户端的javaScript脚本
function verify(){
$.get("AJAXServer?name="+encodeURI($("#userName").val()),null,functioncallback(data){$("#result").html(data);});
}
服务器端代码:
protected void doGet(HttpServletRequestrequest, HttpServletResponse response) throws ServletException,IOException {
try{
response.setContentType("text/html;charset=utf-8");
PrintWriter out = response.getWriter();
Integer inte = (Integer)request.getSession().getAttribute("total");
int temp = 0;
if (inte == null) {
temp = 1;
} else {
temp = inte.intValue() + 1;
}
request.getSession().setAttribute("total",temp);
//1.取参数
String old =request.getParameter("name");
Stringname = newString(old.getBytes("iso8859-1"),"UTF-8");
//String name = URLDecoder.decode(old,"UTF-8");
//2.检查参数是否有问题
if(old == null || old.length() == 0){
out.println("用户名不能为空");
} else{
// String name = URLDecoder.decode(old,"UTF-8");
// byte[] by = old.getBytes("ISO8859-1");
// String name = new String(by,"utf-8");
// String name = URLDecoder.decode(old,"utf-8");
//3.校验操作
// String name = old;
if(name.equals("admin")){
//4。和传统应用不同之处。这一步需要将用户感兴趣的数据返回给页面段,而不是将一个新的页面发送给用户
//写法没有变化,本质发生了改变
out.println("用户名[" + name + "]已经存在,请使用其他用户名,如 " + name +temp);
} else{
out.println("用户名[" + name + "]尚未存在,可以使用该用户名注册");
}
}
} catch(Exception e){
e.printStackTrace();
}
}
第二种方法:在客户端的javaScript中传递参数时,在参数值之前加上encodeURI()两次(记住这个地方是两次,上面第一种方法是用encodeURI()一次),然后在服务器端获得参数时对参数进行解码,如:Stringold
= request.getParameter("name");
String name = URLDecoder.decode(old,"UTF-8");
客户端的javaScript脚本代码:
function verify(){
$.get("AJAXServer?name="+encodeURI(encodeURI($("#userName").val())),null,functioncallback(data){$("#result").html(data);});
}
服务器端代码:
protected void doGet(HttpServletRequestrequest, HttpServletResponse response) throws ServletException,IOException {
try{
response.setContentType("text/html;charset=utf-8");
PrintWriter out = response.getWriter();
Integer inte = (Integer)request.getSession().getAttribute("total");
int temp = 0;
if (inte == null) {
temp = 1;
} else {
temp = inte.intValue() + 1;
}
request.getSession().setAttribute("total",temp);
//1.取参数
String old =request.getParameter("name");
//String name = newString(old.getBytes("iso8859-1"),"UTF-8");
String name =URLDecoder.decode(old,"UTF-8");
//2.检查参数是否有问题
if(old == null || old.length() == 0){
out.println("用户名不能为空");
} else{
// String name = URLDecoder.decode(old,"UTF-8");
// byte[] by = old.getBytes("ISO8859-1");
// String name = new String(by,"utf-8");
// String name = URLDecoder.decode(old,"utf-8");
//3.校验操作
// String name = old;
if(name.equals("admin")){
//4。和传统应用不同之处。这一步需要将用户感兴趣的数据返回给页面段,而不是将一个新的页面发送给用户
//写法没有变化,本质发生了改变
out.println("用户名[" + name + "]已经存在,请使用其他用户名,如 " + name +temp);
} else{
out.println("用户名[" + name + "]尚未存在,可以使用该用户名注册");
}
}
} catch(Exception e){
e.printStackTrace();
}
}
相关文章推荐
- Ajax中文乱码问题解决方案
- Ajax中文乱码终极解决方案
- ajax中文乱码原因分析及解决方案
- extjs及ajax中文乱码问题及解决方案(基本通用)
- Ajax中的中文乱码问题的解决方案
- ajax中文乱码原因分析及解决方案
- ajax url中含有中文参数 后台接受产生乱码解决方案
- 再转一个 ajax中文乱码解决方案
- Javascript和Ajax中JSP中文乱码吐血版解决方案
- 用ajax提交表单时中文乱码解决方案 推荐
- Ajax中文参数乱码解决方案
- Ajax中文乱码问题解决方案(servlet)
- ajax 文本框输入提示中文乱码问题解决方案
- AJAX传输数据的中文乱码之完全解决方案
- Ajax中文乱码问题解决方案(servlet)
- Ajax中异步处理时中文乱码解决方案
- Ajax中异步处理时中文乱码解决方案
- 最通用的Ajax中文乱码解决方案。
- Javascript和Ajax中文乱码吐血版解决方案
- Ajax中文乱码问题解决方案