RSS
热门关键字:  Linux  图形  项目管理  LAMP  java
当前位置 : 主页>开源技术>AJAX技术>列表

ajax中文问题彻底解决

来源:中国开源社区 作者:sherman 时间:2007-09-18 点击:
URL等这些参数,如果我们发送ajax请求时需要传递中文参数,最好的办法就是在客户端就完成对HTTP请求中中文数据的编码,否则浏览器默认是用ISO-8859-1编码发送http请求的。这里说的中文数据包括两部分:

一是Http Header中的URL参数,比如<a href=”test.jsp?param1=中文参数1&param2=中文参数2>这类传参时的中文,这种中文编码的解决办法最好是让应用服务器来做,比如我们最常用的Tomcat配置URI的方法如下(Tomcat5.X以上必须设定该参数,否则它会采用一种非ISO-8859-1的编码方式,这样即使服务端再request.setCharaterEncoding()都没法了,必定乱码!):

<Connector port="8080" maxThreads="150" minSpareThreads="25" maxSpareThreads="75" enableLookups="false" acceptCount="100" debug="0" connectionTimeout="20000" proxyPort="80" disableUploadTimeout="true" URIEncoding="UTF-8"/>

二是http请求中body部分的中文,这就是表单中的数据了,这部分ajaxHttpRequest有专门的方法设置:如下所示:

request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded;charset=UTF-8');

这样Http Body部分的中文就都已经编码为UTF-8了。,

好了,既然客户端浏览器发送ajax请求时请求的内容都已经用UTF-8编码了,那么传到服务端的数据就已经是编码后的中文数据了,服务端的request就不需要通过request.SetCharaterEncodin()方式再设定编码格式了。这点跟Struts是最大的区别,我们通常看到的Struts对编码问题的解决是通过过滤器,即对所有发送到后台服务端的请求都实现通过这个过滤器,在这个过滤器中设定

最新评论共有 0 位网友发表了评论
发表评论
评论内容:不能超过250字,需审核,请自觉遵守互联网相关政策法规。
用户名: 密码:
匿名?
注册