`
siaslance
  • 浏览: 23628 次
文章分类
社区版块
存档分类
最新评论

Ajax乱码

 
阅读更多

AJAX中文乱码问题的解决方法有两种:

(1)页面端数据作一次encodeURI,服务器端稍作改变即可

面面端verify.js脚本:

view plaincopy to clipboardprint?
function verify()  
{  
    //1.接收html数据  
    //解决中文乱码问题的方法:1页面端发出的数据作一次encodeURI,服务器端使用  
    //解决中文乱码问题的方法:2页面端发出的数据作两次的encodeURI,服务器端作一次URLDecoder.decode(old,"UTF-8");      
     var url ="AJAXServer?name="+encodeURI($("#userName").val());//页面端发出的数据作一次encodeURI  
        url = convertURL(url);  
        $.get(url,function (data)  
        {  
            $("#result").html(data);  

        });  
        //2.对数据进行发送  
        //3.回调函数  
    }  
    function convertURL(url)  
    {  
        var timetamp = (new Date()).valueOf();  
        if(url.indexOf("?")>=0)  
        {  
            url=url+"&t"+timetamp;  
        }  
        else
        {  
            url=url+"?t"+timetamp;  
        }  
        return url;  
}
function verify()
{
    //1.接收html数据
    //解决中文乱码问题的方法:1页面端发出的数据作一次encodeURI,服务器端使用
    //解决中文乱码问题的方法:2页面端发出的数据作两次的encodeURI,服务器端作一次URLDecoder.decode(old,"UTF-8");   
     var url ="AJAXServer?name="+encodeURI($("#userName").val());//页面端发出的数据作一次encodeURI
        url = convertURL(url);
        $.get(url,function (data)
        {
            $("#result").html(data);

        });
        //2.对数据进行发送
        //3.回调函数
    }
    function convertURL(url)
    {
        var timetamp = (new Date()).valueOf();
        if(url.indexOf("?")>=0)
        {
            url=url+"&t"+timetamp;
        }
        else
        {
            url=url+"?t"+timetamp;
        }
        return url;
}

服务器端的程序稍作修改即可,对字符串用指定方式编码:

view plaincopy to clipboardprint?
import javax.servlet.http.HttpServlet;  
import javax.servlet.http.HttpServletRequest;  
import javax.servlet.http.HttpServletResponse;  
import javax.servlet.ServletException;  
import java.io.IOException;  
import java.io.PrintWriter;  
import java.net.URLDecoder;  

/**
* Created by IntelliJ IDEA.
* User: Administrator
* Date: 2009-1-5
* Time: 21:26:55
* To change this template use File | Settings | File Templates.
*/
public class AJAXServer extends HttpServlet  
{  
    protected void doPost(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) throws ServletException, IOException {  
        doGet(httpServletRequest, httpServletResponse);  
    }  

    protected void doGet(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) throws ServletException, IOException {  
        //写校验代码  


                try{  

            httpServletResponse.setContentType("text/html;charset=utf-8");        
            PrintWriter out = httpServletResponse.getWriter();  
            Integer inte = (Integer)httpServletRequest.getSession().getAttribute("total");  
            int temp = 0;                      
            //1.取参数信息  
            if (inte == null)  
            {  
                temp = 1;  
            }  
            else
            {  
                temp = inte.intValue() + 1;  
            }  
            httpServletRequest.getSession().setAttribute("total",temp);  


            String old = httpServletRequest.getParameter("name");  
            String name = new String(old.getBytes("iso8859-1"),"UTF-8");//服务器稍作修改即可,用指定方式编码  
            //2.检查参数是否有问题  
            if(old == null || old.length() == 0){  
                out.println("用户名不能为空");  
            } else{  

                //3.校验操作  
                if(name.equals("wangxingkui")){  
                    //4。和传统应用不同之处。这一步需要将用户感兴趣的数据返回给页面段,而不是将一个新的页面发送给用户  
                    //写法没有变化,本质发生了改变  
                    out.println("用户名[" + name + "]已经存在,请使用其他用户名, " + temp);  
                } else{  
                    out.println("用户名[" + name + "]尚未存在,可以使用该用户名注册, " + temp);  
                }  
            }  
        } catch(Exception e){  
            e.printStackTrace();  
        }  
    }  
}
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.ServletException;
import java.io.IOException;
import java.io.PrintWriter;
import java.net.URLDecoder;

/**
* Created by IntelliJ IDEA.
* User: Administrator
* Date: 2009-1-5
* Time: 21:26:55
* To change this template use File | Settings | File Templates.
*/
public class AJAXServer extends HttpServlet
{
    protected void doPost(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) throws ServletException, IOException {
        doGet(httpServletRequest, httpServletResponse);
    }

    protected void doGet(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) throws ServletException, IOException {
        //写校验代码


                try{

            httpServletResponse.setContentType("text/html;charset=utf-8");     
            PrintWriter out = httpServletResponse.getWriter();
            Integer inte = (Integer)httpServletRequest.getSession().getAttribute("total");
            int temp = 0;                   
            //1.取参数信息
            if (inte == null)
            {
                temp = 1;
            }
            else
            {
                temp = inte.intValue() + 1;
            }
            httpServletRequest.getSession().setAttribute("total",temp);


            String old = httpServletRequest.getParameter("name");
            String name = new String(old.getBytes("iso8859-1"),"UTF-8");//服务器稍作修改即可,用指定方式编码
            //2.检查参数是否有问题
            if(old == null || old.length() == 0){
                out.println("用户名不能为空");
            } else{

                //3.校验操作
                if(name.equals("wangxingkui")){
                    //4。和传统应用不同之处。这一步需要将用户感兴趣的数据返回给页面段,而不是将一个新的页面发送给用户
                    //写法没有变化,本质发生了改变
                    out.println("用户名[" + name + "]已经存在,请使用其他用户名, " + temp);
                } else{
                    out.println("用户名[" + name + "]尚未存在,可以使用该用户名注册, " + temp);
                }
            }
        } catch(Exception e){
            e.printStackTrace();
        }
    }
}

******************************************

(2)解决中文乱码问题:页面端发出的数据作两次encodeURI,服务器作一URLDecoder.decode(old,UTF-8)

页面端verify.js的脚本:

view plaincopy to clipboardprint?
function verify()  
{  
    //1.接收html数据  
    //解决中文乱码问题的方法:1页面端发出的数据作一次encodeURI,服务器端使用  
    //解决中文乱码问题的方法:2页面端发出的数据作两次的encodeURI,服务器端作一次URLDecoder.decode(old,"UTF-8");      
    var url ="AJAXServer?name="+encodeURI(encodeURI($("#userName").val()));//页面端的数据作两次encodeURI  
        url = convertURL(url);  

        $.get(url,function (data)  
        {  
            $("#result").html(data);  

        });  
        //2.对数据进行发送  
        //3.回调函数  
    }  
    function convertURL(url)  
    {  
        var timetamp = (new Date()).valueOf();  
        if(url.indexOf("?")>=0)  
        {  
            url=url+"&t"+timetamp;  
        }  
        else
        {  
            url=url+"?t"+timetamp;  
        }  
        return url;  
}
function verify()
{
    //1.接收html数据
    //解决中文乱码问题的方法:1页面端发出的数据作一次encodeURI,服务器端使用
    //解决中文乱码问题的方法:2页面端发出的数据作两次的encodeURI,服务器端作一次URLDecoder.decode(old,"UTF-8");   
    var url ="AJAXServer?name="+encodeURI(encodeURI($("#userName").val()));//页面端的数据作两次encodeURI
        url = convertURL(url);

        $.get(url,function (data)
        {
            $("#result").html(data);

        });
        //2.对数据进行发送
        //3.回调函数
    }
    function convertURL(url)
    {
        var timetamp = (new Date()).valueOf();
        if(url.indexOf("?")>=0)
        {
            url=url+"&t"+timetamp;
        }
        else
        {
            url=url+"?t"+timetamp;
        }
        return url;
}

服务器端的数据作一次URLDecoder.decode(old,UTF-8);的解码工作,服务器端只作一次的解码工作就可以了,因为在浏览器的内部还会做一次解码,所以服务器只作一次就可以了

view plaincopy to clipboardprint?
import javax.servlet.http.HttpServlet;  
import javax.servlet.http.HttpServletRequest;  
import javax.servlet.http.HttpServletResponse;  
import javax.servlet.ServletException;  
import java.io.IOException;  
import java.io.PrintWriter;  
import java.net.URLDecoder;  

/**
* Created by IntelliJ IDEA.
* User: Administrator
* Date: 2009-1-5
* Time: 21:26:55
* To change this template use File | Settings | File Templates.
*/
public class AJAXServer extends HttpServlet  
{  
    protected void doPost(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) throws ServletException, IOException {  
        doGet(httpServletRequest, httpServletResponse);  
    }  

    protected void doGet(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) throws ServletException, IOException {  
        //写校验代码  


                try{  
            httpServletResponse.setContentType("text/html;charset=utf-8");        
            PrintWriter out = httpServletResponse.getWriter();  
            Integer inte = (Integer)httpServletRequest.getSession().getAttribute("total");  
            int temp = 0;                      
            //1.取参数信息  
            if (inte == null)  
            {  
                temp = 1;  
            }  
            else
            {  
                temp = inte.intValue() + 1;  
            }  
            httpServletRequest.getSession().setAttribute("total",temp);  


            String old = httpServletRequest.getParameter("name");  
           String name = URLDecoder.decode(old,"UTF-8");//这是服务器端做的一次解码工作  

            //2.检查参数是否有问题  
            if(old == null || old.length() == 0){  
                out.println("用户名不能为空");  
            } else{  
                //3.校验操作  
//                String name = old;  
                if(name.equals("wangxingkui")){  
                    //4。和传统应用不同之处。这一步需要将用户感兴趣的数据返回给页面段,而不是将一个新的页面发送给用户  
                    //写法没有变化,本质发生了改变  
                    out.println("用户名[" + name + "]已经存在,请使用其他用户名, " + temp);  
                } else{  
                    out.println("用户名[" + name + "]尚未存在,可以使用该用户名注册, " + temp);  
                }  
            }  
        } catch(Exception e){  
            e.printStackTrace();  
        }  
    }  
}

转载:偷星九月天漫画免费阅读

分享到:
评论

相关推荐

    ajax乱码解决方案

    总的来说,解决Ajax乱码问题的关键在于理解字符编码的工作原理,确保数据在整个传输过程中的编码与解码一致性,以及正确设置服务器和客户端的编码设置。在实际应用中,还应考虑跨平台和跨浏览器的兼容性,以确保解决...

    Ajax乱码小结

    ### Ajax乱码问题详解 #### 一、Ajax乱码概述 在使用Ajax技术进行前后端交互的过程中,常常会遇到字符编码的问题,特别是当涉及到中文或其他非ASCII字符时,容易出现乱码现象。根据题目中的描述,“Ajax乱码:当...

    Ajax乱码解决方案(docx)

    Ajax乱码问题主要涉及到字符编码的处理,包括服务器端、客户端以及文件的编码设置。解决Ajax乱码问题的关键在于确保整个数据传输链路上的编码一致性。 1. **字符编码** - **UTF-8**:广泛使用的编码格式,支持多种...

    解决ajax乱码和页面传值问题

    一、解决Ajax乱码问题 Ajax发送和接收数据时,乱码问题主要出现在两个环节:发送请求时的数据编码和服务器返回数据的解码。以下是解决乱码的关键步骤: 1. 数据编码:在发送Ajax请求前,确保你的数据已经正确编码...

    AJAX乱码解决大全.doc

    ### AJAX乱码问题详解与解决策略 #### 编码基础概览 乱码问题往往源自于数据在传输过程中编码方式的不一致。在探讨AJAX乱码解决之道前,我们首先来了解一下几种常见的编码格式: - **UTF-8**:全球最广泛使用的...

    ajax乱码解决汇总

    【Ajax乱码问题详解】 在Web开发中,Ajax(异步JavaScript和XML)技术被广泛应用于实现页面的无刷新更新,然而,与之相伴的一个常见问题是字符编码导致的乱码现象。本文将深入探讨Ajax乱码问题的成因及其解决方案。...

    Ajax乱码解决办法

    本文将详细探讨Ajax乱码的产生原因以及解决方案。 ### 一、乱码产生的原因 1. **服务器端编码不一致**:如果服务器返回的数据编码格式与客户端(浏览器)的预期编码不同,就会产生乱码。例如,服务器返回UTF-8编码...

    ajax乱码ajax乱码ajax乱码ajax乱码ajax乱码

    ### AJAX乱码问题详解 #### 一、引言 在Web开发中,AJAX(Asynchronous JavaScript and XML)技术被广泛应用于实现网页的部分更新,从而提高用户体验。然而,在实际项目中,开发人员可能会遇到AJAX请求返回的数据...

    ajax乱码解决办法

    "ajax乱码解决办法"这个主题正是针对这类问题提供解决方案。 首先,我们需要理解Ajax请求中的乱码问题通常源于以下几个方面: 1. **服务器编码设置**:服务器返回的数据可能是以特定的字符编码格式(如GBK或UTF-8...

    Ajax中文乱码问题解决方案

    然而,在处理中文字符时,Ajax请求可能会遇到乱码问题,这主要是由于编码格式不一致或者处理不当导致的。本文将深入探讨Ajax中文乱码问题的成因,并提供一系列解决方案。 **一、问题原因** 1. **编码格式不一致**...

    Ajax乱码解决方案

    ### Ajax乱码解决方案 在进行Ajax开发的过程中,经常会遇到数据编码问题导致的乱码现象。这类问题虽然看似简单,但若处理不当,则可能耗费大量时间进行调试与解决。本文将结合一个具体的案例来探讨如何有效地解决...

    Ajax 乱码

    ### Ajax 乱码问题解析与解决方案 #### 一、乱码基本概念 乱码是指由于字符编码不一致或处理不当而导致的文字显示异常现象。在Web开发中,尤其是在使用Ajax进行前后端交互时,乱码问题尤为常见。乱码通常发生在以下...

    struts,ajax乱码解决方案

    【Struts和Ajax乱码解决方案】 在Web开发中,乱码问题始终是一个常见的困扰,特别是对于使用Struts和Ajax技术的开发者来说。乱码问题主要出现在数据的输入、传输和展示过程中,涉及到编码格式的选择和一致性。以下...

    Ajax中文乱码问题解决方法

    首先,我们需要理解Ajax乱码的根源。当JavaScript发送HTTP请求时,如果服务器和客户端之间关于字符编码的约定不一致,就会导致乱码。常见的原因包括: 1. **请求头设置不正确**:Ajax请求默认使用UTF-8编码,但...

    ajax解决中文乱码(java/jsp)

    ### AJAX解决中文乱码(Java/JSP) #### 知识点概述 在Web开发中,尤其是在使用Java与JSP技术栈进行开发时,经常会遇到的一个问题是:如何处理AJAX请求中的中文字符乱码问题。本篇文章将详细介绍如何通过前端编码...

    Ajax FireFox IE 乱码兼容问题

    在IT领域,特别是Web开发中,字符编码的处理是一大挑战,尤其是在跨浏览器、跨平台的环境下,如在Ajax请求中遇到的FireFox与IE之间的乱码兼容问题。本文将深入探讨这一问题,并提供详细的解决方案。 ### Ajax与字符...

    jsp中文乱码总结包括 ajax中文乱码

    针对java web开发方面中文乱码情况的总结,基本各种情况都有了!

    Extjs Ajax 乱码问题解决方案

    Extjs Ajax乱码问题的出现通常与字符编码的不一致有关,无论是在客户端提交到服务器的数据还是服务器返回给客户端的数据中都可能出现乱码。解决此问题通常需要对编码过程和开发环境进行细致的调整。 首先,了解乱码...

    ajax 乱码的一种解决方法

    总的来说,处理AJAX乱码问题,需要在服务器端和客户端都考虑到编码转换的问题,并根据不同的开发环境选择合适的转换工具和方法。务必确保在数据传输过程中的每一个环节都正确地处理了编码转换,才能避免乱码的产生,...

Global site tag (gtag.js) - Google Analytics