数据传递编码仅支持UTF-8,这个虽然是全球统一编码,但是也要考虑一下中国人名本地网站的编码问题吧
而且 在jquery的发送端,无论你设置了程序级编码还是页面级编码,jquery都会使用utf-8的编码方式传递过去
有些网站都运营好长时间了,完全修改UTF-8确实有点困难,好了牢骚就发到这里,下面是自己写的一个解决例子
希望能对大家有一些帮助。
原理:
在ajax发送端使用escape方法。然后在接收端使用 unescape方法转换
例子:
gb2312.html
- <html>
- <head>
- <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
- <SCRIPT LANGUAGE="JavaScript" src="js/jquery-1.2.4.js"></script>
- <SCRIPT LANGUAGE="JavaScript">
- <!--
- $(document).ready(function(){
- $("#btn").click(function(){
- $.get("php/gb2312.php",function(data){
- $("#content").html(unescape(data));//这里unescape一下就可以了
- })
- });
- });
- //-->
- </SCRIPT>
- <title>无标题文档</title>
- </head>
- <body>
- <div ID="btn">获得ajax中文</div>
- <div ID="content"></div>
- </body>
- </html>
gb2312.php
- <?
- echo escape(" GB2312中文");
- function escape($str) {
- preg_match_all("/[/x80-/xff].|[/x01-/x7f]+/",$str,$r);
- $ar = $r[0];
- foreach($ar as $k=>$v) {
- if(ord($v[0]) < 128)
- $ar[$k] = rawurlencode($v);
- else
- $ar[$k] = "%u".bin2hex(iconv("GB2312","UCS-2",$v));
- }
- return join("",$ar);
- }
- ?>