黄聪:解决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. ?>  
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值