作者:mobiledu2502857683 | 来源:互联网 | 2018-06-17 03:20
前两天写过服务端的,可以解决所有的浏览器读取中文乱码的问题,总是有点不爽,憋了一天,想出这个东东来,能解决firefox和ie读中文乱码的问题,opera不行,chome也没测试,暂且放着吧。
例子:
rsajax.js:
代码如下:
var http_request = false; function makePOSTRequest(url, parameters) { http_request = false; if (window.XMLHttpRequest) { http_request = new XMLHttpRequest(); if (http_request.overrideMimeType) { http_request.overrideMimeType('text/html'); } } else if (window.ActiveXObject) { try { http_request = new ActiveXObject("Msxml2.XMLHTTP"); } catch (e) { try { http_request = new ActiveXObject("Microsoft.XMLHTTP"); } catch (e) {} } } if (!http_request) { alert('Cannot create XMLHTTP instance'); return false; } http_request.Onreadystatechange= alertContents; http_request.open('POST', url, true); http_request.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); //http_request.setRequestHeader("Content-Type","application/text/html; charset:utf-8"); http_request.setRequestHeader("Content-length", parameters.length); http_request.setRequestHeader("Connection", "close"); if(!Sys.ie){ http_request.overrideMimeType("text/html;charset=gb2312"); } http_request.send(parameters); } function alertContents() { if (http_request.readyState == 4) { if (http_request.status == 200) { if(Sys.ie){ result = http_request.responseBody; } else { result = http_request.responseText; } //newresult=result.replace(/[^\u0000-\u00FF]/g,function($0){return escape($0).replace(/(%u)(\w{4})/gi,"&#x$2;")}); //newreslt=unescape(result.replace(/&#x/g,'%u').replace(/;/g,'')); //utf-8和汉字互转,不需要了 document.getElementById('waiting').innerHTML = ''; if(Sys.ie){ document.getElementById('showresults').innerHTML =gb2utf8(result); } else{ document.getElementById('showresults').innerHTML =result; } } else { alert('There was a problem with the request.'); } }else{ document.getElementById('waiting').innerHTML = ' ';} } function get(obj) { //var poststr = "accounts=" + encodeURI( document.getElementById("accounts").value ); makePOSTRequest('y.htm', ''); } //ie引入一个杂交函数,nndx function gb2utf8(data){ var glbEncode = []; gb2utf8_data = data; execScript("gb2utf8_data = MidB(gb2utf8_data, 1)", "Vbscript"); var t=escape(gb2utf8_data).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(++ik=t[i].substring(0,4); if(!glbEncode[k]) { gb2utf8_char = eval("0x"+k); execScript("gb2utf8_char = Chr(gb2utf8_char)", "Vbscript"); glbEncode[k]=escape(gb2utf8_char).substring(1,6); } t[i]=glbEncode[k]+t[i].substring(4); } gb2utf8_data = gb2utf8_char = null; return unescape(t.join("%")); } var Sys = {}; var ua = navigator.userAgent.toLowerCase(); if (window.ActiveXObject) Sys.ie = ua.match(/msie ([\d.]+)/)[1] else if (document.getBoxObjectFor) Sys.firefox = ua.match(/firefox\/([\d.]+)/)[1] else if (window.MessageEvent && !document.getBoxObjectFor) Sys.chrome = ua.match(/chrome\/([\d.]+)/)[1] else if (window.opera) Sys.opera = ua.match(/opera.([\d.]+)/)[1] else if (window.openDatabase) Sys.safari = ua.match(/version\/([\d.]+)/)[1];
index.php
代码如下:
y.htm
我们大家一起来,嘿嘿