开发者社区> 老朱教授> 正文

解决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. ?>   本文转自黄聪博客园博客,原文链接:http://www.cnblogs.com/huangcong/archive/2011/04/25/2026880.html,如需转载请自行联系原作者

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
解决jquery.validate.js的验证bug
版本提示:jq为1.4.4, jquery.validate 为jQuery validation plug-in 1.7 问题: a.选填选项,如邮箱设置格式验证,那么情况输入框,验证label变成空白的【原来的默认提示没了】 b.
1045 0
JavaWeb项目的中文乱码的原因以及Servlet中处理GET请求和POST请求编码过滤器
一、乱码原因 ①传输方和接收方采用的编码不一致。传输方对参数采用的是UTF-8编码而接收方却用GBK进行解析,当然是乱码。 ②Tomcat服务器默认采用的ISO8859-1编码得到参数值。虽然①中采用了同样的编码方式,但经过tomcat一处理,也会出现乱码(GET方式)   二、解决办法 方法一 每次传输都手动设置编码(GET方式传输数据) 传输方 String name =
1313 0
Linux系统中使用GCC CPU参数优化代码编译
Linux系统中使用GCC CPU参数优化代码编译 使用特定的GCC参数可以使编译出的程序执行效率有较大提升。具体如下: 1、优化原理: 在编译程序时,借助参数传递的方法,使用与系统CPU相匹配的gcc参数,编译出的程序就是为系统CPU而进行特定优化过的,因而执行速度和效率都会是最好。
825 0
+关注
3546
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
JS零基础入门教程(上册)
立即下载
性能优化方法论
立即下载
手把手学习日志服务SLS,云启实验室实战指南
立即下载