zoukankan      html  css  js  c++  java
  • 黄聪:解决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. ?>  

  • 相关阅读:
    383. Ransom Note
    598. Range Addition II
    453. Minimum Moves to Equal Array Elements
    492. Construct the Rectangle
    171. Excel Sheet Column Number
    697. Degree of an Array
    665. Nondecreasing Array
    视频网站使用H265编码能提高视频清晰度吗?
    现阶段的语音视频通话SDK需要解决哪些问题?
    企业远程高清会议平台视频会议系统在手机端使用的必备要求有哪些?
  • 原文地址:https://www.cnblogs.com/huangcong/p/2026880.html
Copyright © 2011-2022 走看看