解決Jquery在GET方式傳遞引數時gb2312中文編碼亂碼

老朱教授發表於2017-10-01

資料傳遞編碼僅支援UTF-8,這個雖然是全球統一編碼,但是也要考慮一下中國人名本地網站的編碼問題吧

而且 在jquery的傳送端,無論你設定了程式級編碼還是頁面級編碼,jquery都會使用utf-8的編碼方式傳遞過去

有些網站都運營好長事件了,完全修改UTF-8確實有點困難,好了牢騷就發到這裡,下面是自己寫的一個解決例子

希望能對大家有一些幫助。

原理:

在ajax傳送端使用escape方法。然後在接收端使用 unescape方法轉換

例子:

gb2312.html


  1. <html> 
  2. <head> 
  3. <meta http-equiv=“Content-Type” content=“text/html; charset=gb2312” /> 
  4. <SCRIPT LANGUAGE=“JavaScript” src=“js/jquery-1.2.4.js”></script> 
  5.  <SCRIPT LANGUAGE=“JavaScript”> 
  6.   <!–  
  7.     $(document).ready(function(){  
  8.        $(“#btn”).click(function(){  
  9.          $.get(“php/gb2312.php”,function(data){  
  10.              
  11.                 $(“#content”).html(unescape(data));//這裡unescape一下就可以了  
  12.            
  13.          })  
  14.            
  15.        });  
  16.     });  
  17.   //–> 
  18.   </SCRIPT> 
  19. <title>無標題文件</title> 
  20. </head> 
  21.  
  22. <body> 
  23.  <div ID=“btn”>獲得ajax中文</div> 
  24.  <div ID=“content”></div> 
  25.  
  26. </body> 
  27. </html> 

gb2312.php


  1. <?  
  2. echo escape(” GB2312中文”);  
  3. function escape($str) {  
  4.    preg_match_all(“/[x80-xff].|[x01-x7f]+/”,$str,$r);  
  5.    $ar = $r[0];  
  6.    foreach($ar as $k=>$v) {  
  7.      if(ord($v[0]) < 128)  
  8.        $ar[$k] = rawurlencode($v);  
  9.      else 
  10.        $ar[$k] = “%u”.bin2hex(iconv(“GB2312”,“UCS-2”,$v));  
  11.    }  
  12.    return join(“”,$ar);  
  13. }  
  14. ?>  

    本文轉自黃聰部落格園部落格,原文連結:http://www.cnblogs.com/huangcong/archive/2011/04/25/2026880.html,如需轉載請自行聯絡原作者


相關文章