日本搞逼视频_黄色一级片免费在线观看_色99久久_性明星video另类hd_欧美77_综合在线视频

國內最全IT社區平臺 聯系我們 | 收藏本站
阿里云優惠2
您當前位置:首頁 > php開源 > php教程 > php ajax交互漢字亂碼的問題解決方法

php ajax交互漢字亂碼的問題解決方法

來源:程序員人生   發布時間:2013-10-26 13:23:32 閱讀次數:2747次

ajax只支持utf-8格式,不能支持gb2312編碼格式,所以經常遇到gb2312的編碼的程序使用ajax就出現亂碼,剛找到一種解決方案是:

服務器端傳送的數據仍是gb2312編碼,客戶端用js將漢字轉變成utf8編碼顯示在頁面

方法一json

一,服務器端json數據用php的iconv函數轉換:iconv('gb2312', 'utf8', "被轉換字符串,輸出到瀏覽器");

客戶端獲取utf8數據,再轉成gb2312:

  1. function gb2utf8(data){//gb編碼是,ie通過二進制碼utf8->gbk轉為中文   
  2.      var glbencode = [];   
  3.      gb2utf8_data = data;   
  4.      execscript("gb2utf8_data = midb(gb2utf8_data, 1)""vbscript");   
  5.      var t=escape(gb2utf8_data).replace(/%u/g,"").replace(/(.{2})(.{2})/g|>,"%$2%$1").replace(/%([a-z].)%(.{2})/g|>,"@$1$2");   
  6.      t=t.split("@");   
  7.      var i=0,j=t.length,k;   
  8.      while(++i<j)>   
  9.          k=t.substring(0,4);   
  10.          if(!glbencode[k]) {   
  11.              gb2utf8_char = eval("0x"+k);   
  12.              execscript("gb2utf8_char = chr(gb2utf8_char)""vbscript");   
  13.              glbencode[k]=escape(gb2utf8_char).substring(1,6);   
  14.          }   
  15.          t=glbencode[k]+t.substring(4);   
  16.      }   
  17.      gb2utf8_data = gb2utf8_char = null;   
  18.      return unescape(t.join("%"));   

二,header("content-type", "application/x-www-form-urlencoded; charset=gbk"); //輸出頭標,設置為gbk編碼

三,在ajax請求數據前調用上面的方法指定請求使用的字符集:xmlhttp.setrequestheader( "content-type", "application/x-www-form-urlencoded;charset=gbk");

方案二:search.php

  1. <?php 
  2. header("content-type: text/html; charset=gb2312"); 
  3. include './search.htm'
  4. ?> 
  5. search.htm 
  6. <!doctype html public "-//w3c//dtd xhtml 1.0 transitional//en" "http://www.w3.org/tr/xhtml1/dtd/xhtml1-transitional.dtd"
  7. <html xmlns="http://www.w3.org/1999/xhtml"
  8. <head> 
  9. <meta http-equiv="content-type" content="text/html; charset=gb2312" /> 
  10. <title>高級搜索</title> 
  11. </head> 
  12. <body> 
  13. <h3>高級搜索</h3> 
  14. <form method="post" action=""
  15.   學校類型: 
  16.   <select name="schooltype"
  17.     <option value="">全部</option> 
  18.     <option value="1">小學</option> 
  19.     <option value="2">初中</option> 
  20.   </select> 
  21.   學校名稱: 
  22.   <select name="sid" id="sid"
  23.     <option value="">請選擇學校</option> 
  24.   </select> 
  25. </form> 
  26. <script type="text/"
  27. function ajax(settings) { 
  28.     var xhr = window.activexobject ? new activexobject("microsoft.xmlhttp") : new xmlhttprequest(), successed = false; 
  29.     xhr.open(settings.type, settings.url); 
  30.     if(settings.type == 'post'
  31.      xhr.setrequestheader('content-type''application/x-www-form-urlencoded'); 
  32.     xhr.send((!settings.cache ? 'time=' + new date().gettime() + '&' : '') + settings.data); 
  33.     settings.loader(); 
  34.     settimeout(function() { 
  35.         if(!successed) { 
  36.             alert('resquest timeout!'); 
  37.             xhr.abort(); 
  38.         } 
  39.     }, settings.timeout); 
  40.     xhr.onreadystatechange = function() { 
  41.         if (xhr.readystate == 4 && xhr.status == 200) { 
  42.             settings.callback(xhr.responsetext.replace(/(^s*)|(s*$)/g, "")); 
  43.         } 
  44.         successed = true; 
  45.     } 
  46. function a(t) { 
  47. ajax({ 
  48.   type: 'post'
  49.   url: 'ajax.php'
  50.   data: 'schooltype=' + t, 
  51.   timeout: 8000, 
  52.   cache: true, 
  53.   loader: function() {}, 
  54.   callback: function(d) { 
  55.    var arr = eval(d); 
  56.    if(typeof(arr) == 'object') { 
  57.     var obj, option; 
  58.     document.getelementbyid('sid').innerhtml = ''
  59.     for(var i = 0; obj = arr; i ++) { 
  60.      option = document.createelement('option'); 
  61.      option.value = obj[0]; 
  62.      option.innerhtml = txt2utf8(obj[1], '&#'); 
  63.      document.getelementbyid('sid').appendchild(option); 
  64.     } 
  65.    } 
  66.   } 
  67. }) 
  68. function txt2utf8(string, prefix){ 
  69.     for(var i=0,utf8=[];i<string.length;utf8.push((prefix||'u')+string.charcodeat(i++))); 
  70.     return utf8.join(''); 
  71. a(0); 
  72. </script> 
  73. </body> 
  74. </html> 
  75. ajax.php 
  76. <?php 
  77. header("content-type: text/html; charset=gb2312"); 
  78. $schooltype = !emptyempty($_post['schooltype']) ? $_post['schooltype'] : 0; 
  79. switch($schooltype) { 
  80.     case 0: 
  81.         echo "[['40', '太平溪鎮花栗包完全小學'],['41', '太平溪鎮長嶺黑龍江希望小學'],['42', '樂天溪鎮初級中學'],['43', '樂天溪鎮蓮沱初級中學']]"
  82.         break
  83.     case 1: 
  84.         echo "[['40', '太平溪鎮花栗包完全小學'],['41', '太平溪鎮長嶺黑龍江希望小學']]"
  85.         break
  86.     case 2: 
  87.         echo "[['42', '樂天溪鎮初級中學'],['43', '樂天溪鎮蓮沱初級中學']]"
  88.         break
  89.     default
  90.         break
  91. ?> 
生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關閉
程序員人生
主站蜘蛛池模板: 亚洲精品aaaa | 免费一级毛片在线观看 | 中文字幕免费av | 国产精品成人一区二区 | 欧美在线视频一区 | 久久九精品 | 国产一区二区三区四区五区 | 欧美日韩国产一区二区三区 | 二区欧美| 亚洲精品美女久久久久99 | 国产精品视频一二三 | 亚洲欧美日韩另类 | 日韩免费看片 | 91久久久久 | 国产精品18久久久久久久网站 | 91精品国产精品 | 亚洲视频手机在线观看 | 天堂av.com| 国内黄色片 | 美日韩一区二区三区 | 国内精品久久久久久 | 成人网在线| 午夜免费 | 在线观看黄色免费网站 | 成人黄色在线 | 日本不卡一区二区三区在线观看 | 性久久久久 | 在线国产区 | 久久美女 | 亚洲精品色| 国产精品永久免费视频 | 欧美三区在线观看 | 欧美一区二区三区四区在线观看 | 午夜在线小视频 | 国产第一精品 | 色噜噜一区二区 | 91久久精品一区二区别 | 欧美 日韩 中文 | 国产成人在线观看免费网站 | 新电影天堂 | 亚洲福利一区二区三区 |