zl程序教程

您现在的位置是:首页 >  后端

当前栏目

escape函数解决js中ajax传递中文出现乱码问题

JS中文AJAX 问题 解决 函数 出现 乱码
2023-06-13 09:15:29 时间

本文实例讲述了escape函数解决js中ajax传递中文出现乱码问题,分享给大家供大家参考。具体方法如下:

一、问题描述:

本来网页特效中的escape()是将中文按iso-8859-1字符集进行url编码的,那样通过request.getparameter()是能直接获取到请求参数的,但后来的javascript将escape()换成了unicode字符集编码,如此一来,在jsp教程和servlet中就没法直接拿到请求参数了,具体原因我也不知道。

二、解决办法:

1、首先对中文字符进行两次escape()编码,如要传参数name,值为“你好”,则url的格式为....name=escape(escape("你好")),这样一来,在request.getparameter()就能取到编码后的参数了。

2、由于取到的参数是 %25u4f60%25u597d 格式的,没法用常规的urldecoder.decode()来进行解码,还好,这世上的牛人够多,在网上直接找到了一个工具类,能实现javascript中escape()及unescape()式的编解码
 

复制代码代码如下:
<scriptlanguage="javascript"> 
functionget(id){returndocument.getelementbyid(id).value}
functionsetting()
 {
  varxmlhttp;
 if(window.activexobject)
 {
 xmlhttp=newactivexobject("microsoft.xmlhttp")
 }else{
  xmlhttp=newxmlhttprequest();
 }
 xmlhttp.onreadystatechange=function()
 {
   if(xmlhttp.readystate==4)
   {
      if(xmlhttp.status==200)
   {
      alert("成功!")
   }else{
     alert(xmlhttp.status)
   }
   }
  }
 varurl="action.asp教程?action=setting&rnd="+math.random()
 xmlhttp.open("post",url,true)
 varsenddate="title="+escape(get("title"))+"&conn_way="+escape(get("conn_way"))+"&databasename="+escape(get("databasename"))+"&sqlusername="+escape(get("sqlusername"))+"&sqlpassword="+escape(get("sqlpassword"))+"&sqllocalname="+escape(get("sqllocalname"))+"&pg_size="+escape(get("pg_size"))+"&adminid="+escape(get("adminid"))+"&adminpwd="+escape(get("adminpwd"));
2727xmlhttp.setrequestheader("content-type","application/x-www-form-urlencoded");
 xmlhttp.send(senddate)
 }
</script>

上面的实例我们中文只用了escape函数,语法如下:

定义和用法:
escape()函数可对字符串进行编码,这样就可以在所有的计算机上读取该字符串。
语法:

escape(string)参数描述
string必需。要被转义或编码的字符串。

返回值:
已编码的string的副本。其中某些字符被替换成了十六进制的转义序列。

说明:
该方法不会对ascii字母和数字进行编码,也不会对下面这些ascii标点符号进行编码:-_.!~*"()。其他所有的字符都会被转义序列替换。

提示和注释:
提示:可以使用unescape()对escape()编码的字符串进行解码。
注释:ecmascriptv3反对使用该方法,应用使用decodeuri()和decodeuricomponent()替代它

希望本文所述对大家的javascript程序设计有所帮助。