1、如果服务器端的页面编码是UTF-8,那么客户端就直接用temp1=xmlhttp.responseText接收,就不会产生乱码,因为JS默认情况下是读UTF-8编码的。
2、如果服务器端的页面编码是gb2312,那么客户端就要先用temp1=xmlhttp.responsebody接收服务端返回的二进制内容,然后再用一个函数把二进制转成UTF-8编码,这样客户端的JS读到的内容就不会产生乱码了。代码如下:
- <script language="javascript">
- if (xmlhttp.readyState == 4)
- {
- if (xmlhttp.status == 200)
- {
- var temp1 ="";
- if(codeType=="utf-8"){
- temp1=xmlhttp.responseText;
- }else{
- temp1 = reCode(xmlhttp.responsebody);
- }
- alert(temp1);
- }
- }
- </script>
- <!--把二进制转成UTF-8编码的代码开始-->
- <script language="javascript">
- function reCode(b){
- var glbEncode=new Array();
- var t=rsB(b);
- t=escape(t).replace(/%u/g,"").replace(/(.{2})(.{2})/g,"%$2%$1").replace(/%([A-Z].)%(.{2})/g,"@$1$2");
- t=t.split("@");
- var i=0,j=t.length,k;
- while(++i<j)
- {
- k=t[i].substring(0,4);
- if(!glbEncode[k])glbEncode[k]=escape(rsChar(eval("0x"+k))).substring(1,6);
- t[i]=glbEncode[k]+t[i].substring(4);
- }
- return unescape(t.join("%"));
- }
- </script>
- <script language="vbs">
- Function rsB(vIn)
- rsB = MidB(vIn,1)
- End Function
- Function rsChar(vIn)
- rsChar = Chr(vIn)
- End Function
- </script>
- <!--把二进制转成UTF-8编码的代码结束-->
1、在JSP代码中:response.setHeader("Charset","GB2312");
2、在php代码中:header("Content-Type:text/html;charset=GB2312");
3、在ASP代码中:Response.Charset("GB2312")