escape函数解决js中ajax传递中文出现乱码问题
前端之家收集整理的这篇文章主要介绍了
escape函数解决js中ajax传递中文出现乱码问题,
前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
本文实例讲述了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()式的编解码
<div class="codetitle"><a style="CURSOR: pointer" data="52418" class="copybut" id="copybut52418" onclick="doCopy('code52418')"> 代码如下:
<div class="codebody" id="code52418"><script language="javascript">
function get(id){return document.getelementbyid(id).value}
function setting()
{
var xmlhttp;
if(window.activexobject)
{
xmlhttp=new activexobject("microsoft.xmlhttp")
}else{
xmlhttp=new xmlhttprequest();
}
xmlhttp.onreadystatechange=function()
{
if(xmlhttp.readystate==4)
{
if(xmlhttp.status==200)
{
alert("成功!")
}else{
alert(xmlhttp.status)
}
}
}
var url="action.asp教程?action=setting&rnd="+math.random()
xmlhttp.open("post",url,true)
var senddate ="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"));
2727 xmlhttp.setrequestheader('content-type','application/x-www-form-urlencoded');
xmlhttp.send(senddate)
}