`

javascript AJAX 中文 问题总结

阅读更多
今天碰到了 Ajax 乱码的问题,在网上找了半天资料,试了很多种方法,最后发现还是这篇文章告诉了我正确的办法,特此感谢。原文地址 : http://www.blogjava.net/hulizhong/archive/2007/04/21/112416.html

AJAX中文问题分为两大类:
1)发送路径中的参数有中文,在服务器段接收参数值是乱码

例如:
var url="a.jsp?name=小李";
xmlHTTP.open ("post",url,true);
解决办法:
利用javascript的提供的escape()或encodeURI()方法
例如:
客户端:
var url="a.jsp?name=小李";
url=encodeURI(url);
url=encodeURI(url); //两次,很关键[具体为什么,我也不清楚]
/********************************************/
也有人写成var url="a.jsp?name=escape("小李")";
功能和encodeURI方法类似。
/********************************************/
xmlHTTP.setrequestheader("cache-control","no-cache");
xmlHTTP.setrequestheader("Content-Type","application/x-www-form-urlencoded");
xmlHTTP.setrequestheader("contentType","text/html;charset=uft-8")//指定发送数据的编码格式
xmlHTTP.open ("post",url,true);
服务器端:
String name = request.getParameter("name");
name = java.net.URLDecoder.decode("name", "UTF-8");

2)返回来的responseText或responseXML的值中含有中文是乱码
原因:AJAX在接收responseText或responseXML的值的时候是按照UTF-8的格式来解码的,如果服务器段发送的数据不是UTF-8的格式,那么接收responseText或responseXML的值有可能为乱码。
解决办法:在服务器指定发送数据的格式:
在jsp文件中:
response.setContentType("text/text;charset=UTF-8");//返回的是txt文本文件
或是
response.setContentType("text/xml;charset=UTF-8");//返回的xml文件

总结:1)ajax提交数据的格式默认为utf-8,利用javascript的提供的escape()或encodeURI()方法.在服务器端接收的时候要使用java.net.URLDecoder.decode("","UTF-8")方法进行解码.
2)xtmlhttp 返回的数据默认的字符编码是utf-8,所以服务器要向客户端发送数据的时候,也要采用utf-8编码
如果上述方法仍然解决不了乱码问题,那你尝试一下把jsp,htm,java文件用UTF-8编码格式保存.
总之:前后台数据交互都采用utf-8编码就行了.

-----------------------------------------------
js对文字进行编码涉及3个函数:escape,encodeURI,encodeURIComponent,相应3个解码函数:unescape,decodeURI,decodeURIComponent

1、   传递参数时需要使用encodeURIComponent,这样组合的url才不会被#等特殊字符截断。                           

例如:<script language="javascript">document.write('<a href="http://passport.baidu.com/?logout&aid=7&u='+encodeURIComponent("http://cang.baidu.com/bruce42")+'">退出</a>');</script>

2、   进行url跳转时可以整体使用encodeURI

例如:Location.href=encodeURI("http://cang.baidu.com/do/s?word=百度&ct=21");

3、   js使用数据时可以使用escape

[Huoho.Com编辑]
例如:搜藏中history纪录。

4、   escape对0-255以外的unicode值进行编码时输出%u****格式,其它情况下escape,encodeURI,encodeURIComponent编码结果相同。


最多使用的应为encodeURIComponent,它是将中文、韩文等特殊字符转换成utf-8格式的url编码,所以如果给后台传递参数需要使用encodeURIComponent时需要后台解码对utf-8支持(form中的编码方式和当前页面编码方式相同)

escape不编码字符有69个:*,+,-,.,/,@,_,0-9,a-z,A-Z

encodeURI不编码字符有82个:!,#,$,&,',(,),*,+,,,-,.,/,:,;,=,?,@,_,~,0-9,a-z,A-Z

encodeURIComponent不编码字符有71个:!, ',(,),*,-,.,_,~,0-9,a-z,A-Z

分享到:
评论

相关推荐

    Ajax 中文乱码问题

    ### Ajax 中文乱码问题详解 #### 一、引言 在进行Web开发的过程中,我们经常需要使用Ajax技术来实现异步数据交换。然而,在处理包含中文字符的数据时,经常会遇到中文乱码的问题。这个问题主要源于不同的编码方式...

    各类中文API (java、ajax、JavaScript、jQuery、mysql、oracle )

    文档中的各类中文API涵盖了编程语言、前端库以及数据库管理等多个IT领域的关键知识点。下面将对这些主题进行详细的阐述。 首先,我们来看Java API。Java API是Java开发的核心,它包含了各种预定义的类和接口,提供...

    Ajax 中文手册 api

    总结,Ajax中文手册是学习Ajax技术的重要参考资料,它涵盖了Ajax的基础概念、工作原理、优缺点以及实际应用,帮助开发者更好地理解和运用Ajax来提升网页的交互性和性能。通过深入学习并实践,开发者可以创建出更加...

    ajax中文帮助文档

    **Ajax(Asynchronous JavaScript and XML)**是一种在无需重新加载整个网页的情况下,能够更新部分网页的技术。它通过在后台与服务器进行少量数据交换,使网页实现异步更新。这一技术的核心在于JavaScript,XML则...

    AJAX中文乱码总结

    本篇文章将对AJAX中文乱码问题进行深入探讨,并提供解决策略。 1. 乱码产生的原因 - 数据编码不一致:服务器返回的数据编码与前端页面的编码格式不一致,比如服务器使用UTF-8,而前端页面使用GBK。 - AJAX请求...

    ajax提交中文到servlet

    总结,"ajax提交中文到servlet"涉及到的主要知识点包括Ajax的基本使用、中文编码处理、Servlet中的字符编码设置以及跨域访问。理解并掌握这些知识点,可以有效地实现异步提交中文数据,提升Web应用的用户体验。

    Ajax中文手册

    **Ajax中文手册** Ajax,全称Asynchronous JavaScript and XML(异步JavaScript与XML),是一种创建动态网页的技术。它允许在不重新加载整个页面的情况下,与服务器交换数据并更新部分网页内容,极大地提升了用户...

    javascript实现汉字转拼音

    总结来说,JavaScript实现汉字转拼音主要依赖于第三方库或在线API服务。在选择方法时,应考虑项目的需求,如性能、离线支持、音标需求等因素。在实际开发中,合理利用这些工具和资源,可以有效地解决汉字转拼音的...

    ajax中使用javascript的send方法post参数

    通过本文的介绍,我们了解了如何在AJAX中使用JavaScript的`send`方法来发送POST请求,并且详细探讨了如何设置正确的HTTP头部信息以避免中文乱码等问题。此外,还介绍了如何在服务器端使用`Request.Form`和`Request....

    dwr实现ajax功能ajax+dwr

    通过DWR,我们可以使用JavaScript直接调用服务器端的Java方法,实现Ajax(Asynchronous JavaScript and XML)的功能,即在后台与服务器交互数据并局部更新网页。 **Ajax**的核心是利用JavaScript进行异步数据请求,...

    Struts框架下Ajax发送中文乱码问题的解决

    总结来说,解决Struts框架下Ajax发送中文乱码问题的关键在于: 1. 确保Ajax请求时设置正确的`Content-Type`,以UTF-8编码发送数据。 2. 在Struts配置文件中配置`CharacterEncodingFilter`或在Action中手动设置请求...

    ajax乱码解决汇总

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

    javascript 中英文资料 汇总

    这本书可能涵盖了JavaScript的高级话题,如面向对象编程、AJAX(异步JavaScript和XML)、DOM操作以及性能优化等,适合有一定基础的学习者深入学习。 "[John Wiley & Sons] JavaScript.Examples.Bible [2007].pdf...

    ajax使用示例-unicode转换中文

    总结来说,这个"ajax_example"项目提供了一个清晰的实例,展示了如何在PHP环境中利用Ajax技术处理Unicode编码的中文字符,同时介绍了Ajax的基本使用和PHP的Unicode解码方法。对于学习Web开发,特别是前后端交互和...

    Ajax in Action中文版《Ajax实战》.rar

    总结,Ajax在Action这本书中文版的《Ajax实战》中,将深入探讨这些概念和技术,包括如何在实际项目中有效利用Ajax提升Web应用程序的性能和用户体验。通过阅读本书,开发者可以掌握Ajax的精髓,从而在实践中游刃有余...

    Ajax中文乱码问题解决方案

    ### Ajax中文乱码问题解决方案 在进行Ajax编程时,经常会出现中文乱码的问题,这主要是因为客户端和服务端之间编码设置不一致导致的。为了解决这个问题,我们需要从多个角度出发来确保数据传输过程中字符编码的一致...

Global site tag (gtag.js) - Google Analytics