黄聪:解决Jquery在GET方式传递参数时gb2312中文编码乱码

数据传递编码仅支持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. ?>  

原文地址:https://www.cnblogs.com/huangcong/p/2026880.html