解决编码为gb2312页面ajax交互汉字乱码问题

解决编码为gb2312页面ajax交互汉字乱码问题
ajax只支持utf-8格式,不能支持gb2312编码格式,所以经常遇到gb2312的编码的程序使用ajax就出现乱码,刚找到一种解决方案是:

服务器端传送的数据仍是gb2312编码,客户端用js将汉字转变成utf8编码显示在页面

search.php教程
<?php
header("content-type: text/html; charset=gb2312");
include './search.htm';
?>

search.htm
<!doctype html public "-//w3c//dtd xhtml 1.0 transitional//en" "http://www.w3.org/tr/xhtml1/dtd/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="content-type" content="text/html; charset=gb2312" />
<title>高级搜索</title>
</head>
<body>
<h3>高级搜索</h3>
<form method="post" action="">
  学校类型:
  <select name="schooltype">
    <option value="">全部</option>
    <option value="1">小学</option>
    <option value="2">初中</option>
  </select>
  学校名称:
  <select name="sid" id="sid">
    <option value="">请选择学校</option>
  </select>
</form>
<script type="text/网页特效">
function ajax(settings) {
    var xhr = window.activexobject ? new activexobject("microsoft.xmlhttp") : new xmlhttprequest(), successed = false;
    xhr.open(settings.type, settings.url);
    if(settings.type == 'post')
     xhr.setrequestheader('content-type', 'application/x-www-form-urlencoded');
    xhr.send((!settings.cache ? 'time=' + new date().gettime() + '&' : '') + settings.data);
    settings.loader();
    settimeout(function() {
        if(!successed) {
            alert('resquest timeout!');
            xhr.abort();
        }
    }, settings.timeout);
    xhr.onreadystatechange = function() {
        if (xhr.readystate == 4 && xhr.status == 200) {
            settings.callback(xhr.responsetext.replace(/(^s*)|(s*$)/g, ""));
        }
        successed = true;
    }
}
function a(t) {
ajax({
  type: 'post',
  url: 'ajax.php',
  data: 'schooltype=' + t,
  timeout: 8000,
  cache: true,
  loader: function() {},
  callback: function(d) {
   var arr = eval(d);
   if(typeof(arr) == 'object') {
    var obj, option;
    document.getelementbyid('sid').innerhtml = '';
    for(var i = 0; obj = arr; i ++) {
     option = document.createelement('option');
     option.value = obj[0];
     option.innerhtml = txt2utf8(obj[1], '&#');
     document.getelementbyid('sid').appendchild(option);
    }
   }
  }
})
}
function txt2utf8(string, prefix){
    for(var i=0,utf8=[];i<string.length;utf8.push((prefix||'u')+string.charcodeat(i++)));
    return utf8.join('');
}
a(0);
</script>
</body>
</html>

ajax.php

<?php
header("content-type: text/html; charset=gb2312");
$schooltype = !empty($_post['schooltype']) ? $_post['schooltype'] : 0;
switch($schooltype) {
    case 0:
        echo "[['40', '太平溪镇花栗包完全小学'],['41', '太平溪镇长岭黑龙江希望小学'],['42', '乐天溪镇初级中学'],['43', '乐天溪镇莲沱初级中学']]";
        break;
    case 1:
        echo "[['40', '太平溪镇花栗包完全小学'],['41', '太平溪镇长岭黑龙江希望小学']]";
        break;
    case 2:
        echo "[['42', '乐天溪镇初级中学'],['43', '乐天溪镇莲沱初级中学']]";
        break;
    default:
        break;
}
?>

时间: 2025-01-26 14:11:52

解决编码为gb2312页面ajax交互汉字乱码问题的相关文章

php ajax交互汉字乱码的问题解决方法

服务器端传送的数据仍是gb2312编码,客户端用js将汉字转变成utf8编码显示在页面 方法一json 一,服务器端json数据用php教程的iconv函数转换:iconv('gb2312', 'utf8', "被转换字符串,输出到浏览器");        客户端获取utf8数据,再转成gb2312: function gb2utf8(data){//gb编码是,ie通过二进制码utf8->gbk转为中文       var glbencode = [];       gb2u

js解析文本、xml格式、json数据与ajax和servlet交互及乱码解决

1,在ajax与后台的交互中经常会出现乱码, 解决办法: 在后台获取数据的时候要改变其编码 //获取jsp页面传递过来的userName    代码如下 复制代码 String user= request.getParameter("userName");  //使用String来改变获取到的字符集编码  String userid = new String(user.getBytes("iso8859-1"),"GBK");    2,XMLH

本地html页面ajax与服务端进行数据交互的问题?

问题描述 本地html页面ajax与服务端进行数据交互的问题? 这个是本地ajax代码 $.ajax({ type:"post", url:"http://10.242.106.92:8080/Android_server/servlet", data:{name:username,password:userpassword}, cache:false, dataType:"json", success:function(data){ alert

解决sublime text3 gb2312编码文件显示乱码问题

问题描述: sublime text3 装了gb2312编码转换成utf8显示的ConvertToUTF8插件, 保存文件时会出现乱码,关掉文件,再打开该文件,ConvertToUTF8根本就没起作用,就一直显示乱码,文件重命名后再打开,ConvertToUTF8却能正常转换编码. 关键是:文件重命名后再打开,ConvertToUTF8却能正常转换编码. 可断定是ConvertToUTF8 转码缓存有问题,解决方法: 删除sublime 安装目录下,PackagesUser目录里面的encodi

Servlet 与 Ajax 交互一直报status=parsererror的解决办法

原因:servlet 返回的数据不是 Json 格式 1.JS代码为: var jsonStr = {'clusterNum':2,'iterationNum':3,'runTimes':4}; $.ajax({ type: "post", //http://172.22.12.135:9000/Json.json url: "/LSHome/LSHome", dataType : 'json', data : jsonStr, success: function(

.net gb2312页面的出现乱码解决方法

一个asp.net的网页,编码是gb2312 , 表单用 method="get" 需要判断参数UrlEncode所用的编码,ASP提交的用GB2312,.NET提交的用默认的UTF-8 System.Collections.Specialized.NameValueCollection nv = System.Web.HttpUtility.ParseQueryString(Request.Url.Query, System.Text.Encoding.GetEncoding(&qu

如何解决html网页编码导致jsp页面乱码

html页面中这段不起眼的代码<meta http-equiv="Content-Type" content="text/html; charset=GBK">,错把如果charset=GBK设置为charset=UTF-8的话,即使jsp页面做了中文乱码处理,还是会出现乱码 jsp中文转码如下: String name = new String(request.getParameter("uname").getBytes(    &

ajax返回中文乱码,servlet中的显示乱码,post提交的乱码问题,编码大总结

ajax|servlet|编码|问题|显示|中文|中文乱码 ajax返回中文乱码问题解决使用ajax获取服务器数据返回给客户端,出现中文乱码.在之前的一个ajax应用中指定codepage=936,将所有页面编码都指定为GB2312即可解决.这 次的应用中却无起作用了,经过多次的试验,客服端的编码应该绝对没有问题的.可以判断问题一定出在服务器端.稍微分析一下可知虽然服务器端指定了文件的编 码格式,但对于服务器输出流就成为了怀疑的对象.由于使用MS SQL2000,采用unicode编码,所以返回

ajax+php中文乱码的解决

由于XMLHTTP采用的是Unicode编码上传数据,而一般页面采用的是gb2312,这就造成显示页面时产生乱码.而当在获取页面时的XMLHttp返回的是utf-8编码,这就造成了显示产生乱码. 解决方法之一就是在PHP文件中显示声明为GB2312 header("Content-Type:text/html;charset=GB2312"); 而对于发送到服务器的中文进行转码. 如下 $_POST["content"]=iconv("UTF-8"