多多色-多人伦交性欧美在线观看-多人伦精品一区二区三区视频-多色视频-免费黄色视屏网站-免费黄色在线

國內(nèi)最全I(xiàn)T社區(qū)平臺 聯(lián)系我們 | 收藏本站
阿里云優(yōu)惠2
您當(dāng)前位置:首頁 > php開源 > php教程 > php ajax交互漢字亂碼的問題解決方法

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

來源:程序員人生   發(fā)布時間:2013-10-26 13:23:32 閱讀次數(shù):2740次

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

服務(wù)器端傳送的數(shù)據(jù)仍是gb2312編碼,客戶端用js將漢字轉(zhuǎn)變成utf8編碼顯示在頁面

方法一json

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

客戶端獲取utf8數(shù)據(jù),再轉(zhuǎn)成gb2312:

  1. function gb2utf8(data){//gb編碼是,ie通過二進(jìn)制碼utf8->gbk轉(zhuǎn)為中文   
  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"); //輸出頭標(biāo),設(shè)置為gbk編碼

三,在ajax請求數(shù)據(jù)前調(diào)用上面的方法指定請求使用的字符集: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.   學(xué)校類型: 
  16.   <select name="schooltype"
  17.     <option value="">全部</option> 
  18.     <option value="1">小學(xué)</option> 
  19.     <option value="2">初中</option> 
  20.   </select> 
  21.   學(xué)校名稱: 
  22.   <select name="sid" id="sid"
  23.     <option value="">請選擇學(xué)校</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', '太平溪鎮(zhèn)花栗包完全小學(xué)'],['41', '太平溪鎮(zhèn)長嶺黑龍江希望小學(xué)'],['42', '樂天溪鎮(zhèn)初級中學(xué)'],['43', '樂天溪鎮(zhèn)蓮沱初級中學(xué)']]"
  82.         break
  83.     case 1: 
  84.         echo "[['40', '太平溪鎮(zhèn)花栗包完全小學(xué)'],['41', '太平溪鎮(zhèn)長嶺黑龍江希望小學(xué)']]"
  85.         break
  86.     case 2: 
  87.         echo "[['42', '樂天溪鎮(zhèn)初級中學(xué)'],['43', '樂天溪鎮(zhèn)蓮沱初級中學(xué)']]"
  88.         break
  89.     default
  90.         break
  91. ?> 
生活不易,碼農(nóng)辛苦
如果您覺得本網(wǎng)站對您的學(xué)習(xí)有所幫助,可以手機(jī)掃描二維碼進(jìn)行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關(guān)閉
程序員人生
主站蜘蛛池模板: 欧美一级高清片在线 | 午夜在线播放免费人成无 | 欧美日韩国产不卡在线观看 | 免费视频不卡 | 日本精品a在线 | 欧美日韩一区二区三区视频在线观看 | 亚洲免费高清视频 | 国产亚洲欧美日本一二三本道 | 亚洲最新视频在线观看 | 免费在线播放毛片 | 国产精品东北一极毛片 | 美国一级淫片 | 婷婷色一二三区波多野衣 | 国产区图片区小说区亚洲区 | 最近的中文字幕大全免费版 | 国产精品爱久久久久久久三级 | 伊人亚洲综合网成人 | 欧美色啪 | 欧美性色网 | 日韩国产欧美精品综合二区 | 久久久久夜 | 91精品国产高清久久久久 | 亚洲天堂手机在线 | 国产午夜精品久久久久 | 在线观看a网站 | 亚洲高清免费 | 麻豆精品不卡国产免费看 | 国产 福利 在线 | 日本一区二区在线播放 | 国产叼嘿视频在线观看 | 国产不卡一区二区三区免费视 | 波多野结衣高清videossex | 国产精品99r8免费视频2022 | 欧美亚洲国产精品久久久 | 亚洲成人伊人网 | 成人一a毛片免费视频 | 成人不卡在线 | free性欧美xxx| 亚洲高清国产一区二区三区 | 香蕉在线精品亚洲第一区 | 欧美x性 |