真正的解决Ajax的中文乱码问题(ASP环境)

来源:互联网 发布:淘宝无线店铺链接 编辑:程序博客网 时间:2024/06/11 00:38

本文适用的情况:用Ajax向ASP页面提交数据时,接收端出现乱码。环境是IIS 6.0+ASP+客户端IE7+Ajax(xmlhttp)

解决方法很简单,但是不解决确实很头疼,呵呵。

在客户机页面的Ajax程序中,对于需要xmlhttp.send的数据,需要经过『两次』编码,即encodeURI(),需要用这个函数进行两次编码(原理不清楚,不过就是这么回事!)然后,必须用这个,设置提交编码为UTF-8。
xmlhttp.setRequestHeader("Content-type","text/html;charset=UTF-8")

客户端的编码完成,然后就是在服务器端的解码。用VBS很费劲,最简单的是在服务器端用JS。代码如下:

<script language="javascript" runat="server">
function decodeText(str)
{
    
return (decodeURIComponent(str));
}

</script>

就是这个函数了,需要的时候,用这个函数解码一下,就好了。

最后,强调一点,客户机和服务器的两个页面的编码,都要强制设置为GB2312。
<%response.Charset="GB2312"%>

然后,就可以了。无论是显示给客户浏览器的,还是服务器接收到存入数据库的,中文乱码问题都不存在了。