Ajax中文乱码问题解决方法(服务器端用servlet)

简介:
最近研究ajax,在界面上text中输入中文,发送出去后返回乱码。经过一个晚上的测试,已经得到满意答案,代码如下:

HTML:
    ……
    //实际上这里的
charset=utf-8 也是可以的,因为在中文平台下
    //用了
GB2312  
    <meta http-equiv="Content-Type" content="text/html; charset=GB2312">

JS:
    我用了两个方法提交:GET 和 POST。
    在服务器端要对应不同的提交方式转换不同的编码。  
   ……
    //要传递的参数
   var queryString = "firstName=" + firstName + "&lastName=" + lastName
                          + "&birthday=" + birthday;    function   
  
    //GET方式提交
    doRequestUsingGET() {
        createXMLHttpRequest();
        var url = "GetAndPostExample?" + 
queryString  + "&timeStamp="
                          + new Date().getTime();
        xmlHttp.onreadystatechange = handleStateChange;
        xmlHttp.open("GET", url, true);
        xmlHttp.send(null);
    }

    //POST方式提交
    function doRequestUsingPOST() {
        createXMLHttpRequest();
        var url = "GetAndPostExample?timeStamp=" + new Date().getTime();
        xmlHttp.open("POST", url, true);
        xmlHttp.onreadystatechange = handleStateChange;
        xmlHttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
        xmlHttp.send(queryString);
    }

servlet:
        response.setContentType("text/xml");

        //这个一定要设置,这里的设置应该跟HTML中的一样,但是我在这里
        //用了 uft-8, 结果也是一样。
        response.setCharacterEncoding("GB2312");
       
        //当用POST方法时,一定要设置成utf-8,否则乱码
        String firstName = new String(request.getParameter("firstName").getBytes("ISO-8859-1"), "utf-8");

        //当用GET方法时,要设置成GB2312,否则乱码。
        String lastName = new String(request.getParameter("lastName").getBytes("ISO-8859-1"), "GB2312");

测试结果:
因为界面上两个控件
firstName 和   lastName都输入中文。
接收xmlHttp.responseText后,会发现其中一个为乱码,一个可以正常显示中文。

在网上还发现有人说用:
“老问题了,最简单的方法是,全部escape后发送。取回后unescape,绝对没有编码问题。

我测试后发现escape后的东西全部变成null了。不知道有谁成功用过这个方法的,或者还有什么更好的解决乱码的方法,请拿出来共享一下吧 :)



本文转自左正博客园博客,原文链接:http://www.cnblogs.com/soundcode/archive/2011/11/17/2252459.html,如需转载请自行联系原作者

目录
相关文章
|
域名解析 人工智能 弹性计算
DeepSeek服务器繁忙解决方法:使用阿里云一键部署DeepSeek个人网站!
通过阿里云一键部署DeepSeek个人网站,解决服务器繁忙问题。学生用户可领取300元代金券实现0成本部署,普通用户则可用99元/年的服务器。教程涵盖从选择套餐、设置密码到获取百炼API-KEY的全流程,助您快速搭建专属大模型主页,体验DeepSeek、Qwen-max、Llama等多款模型,无需代码,最快5分钟完成部署。支持绑定个人域名,共享亲友使用,日均成本仅约1元。
1263 10
|
网络协议 Java API
【网络】TCP回显服务器和客户端的构造,以及相关bug解决方法
【网络】TCP回显服务器和客户端的构造,以及相关bug解决方法
322 2
|
弹性计算 安全 网络安全
阿里云国际版无法远程连接Windows服务器的解决方法
阿里云国际版无法远程连接Windows服务器的解决方法
loadOnStartup的使用,没有访问服务器之前,创键servlet对象,加快用户访问速度
loadOnStartup的使用,没有访问服务器之前,创键servlet对象,加快用户访问速度
loadOnStartup的使用,没有访问服务器之前,创键servlet对象,加快用户访问速度
|
缓存 安全 Java
Java服务器端技术:Servlet与JSP的集成与扩展
Java服务器端技术:Servlet与JSP的集成与扩展
313 3
|
前端开发 安全 Java
在Java服务器端开发的浩瀚宇宙中,Servlet与JSP犹如两颗璀璨的明星,它们联袂登场,共同编织出动态网站的绚丽篇章。
在Java服务器端开发的浩瀚宇宙中,Servlet与JSP犹如两颗璀璨的明星,它们联袂登场,共同编织出动态网站的绚丽篇章。
257 1
|
缓存 安全 Java
Java服务器端技术:Servlet与JSP的集成与扩展
【6月更文挑战第23天】Java Web开发中,Servlet和JSP是构建动态Web应用的基础。Servlet处理逻辑,JSP专注展示。示例展示了Servlet如何通过`request.setAttribute`传递数据给JSP渲染。JSP自定义标签提升页面功能,如创建`WelcomeTag`显示欢迎消息。Servlet过滤器,如`CacheControlFilter`,用于预处理数据或调整响应头。这些集成和扩展技术增强了应用效率、安全性和可维护性,是Java服务器端开发的关键。
365 7
|
前端开发 安全 Java
Java服务器端开发实战:利用Servlet和JSP构建动态网站
【6月更文挑战第23天】**Servlet和JSP在Java Web开发中扮演关键角色。Servlet处理业务逻辑,管理会话,JSP则结合HTML生成动态页面。两者协同工作,形成动态网站的核心。通过Servlet的doGet()方法响应请求,JSP利用嵌入式Java代码创建动态内容。实战中,Servlet处理数据后转发给JSP展示,共同构建高效、稳定的网站。虽然新技术涌现,Servlet与JSP仍为Java Web开发的基石,提供灵活且成熟的解决方案。**
499 8
|
安全 Linux Shell
SSH服务器拒绝密码登录的解决方法
SSH服务器拒绝密码登录的解决方法
5906 2
|
应用服务中间件
tomcat服务器get、post请求及响应中文乱码问题
tomcat服务器get、post请求及响应中文乱码问题
334 1

热门文章

最新文章