zoukankan      html  css  js  c++  java
  • 编写gbk到utf转码的javascript方法,解决ajax获取页面直接显示乱码的方法

    大家都知道,xmlhttp在通信时采用的是utf编码,而国内很多网页的信息都是采用gbk编码,所以当直接通过ajax去连接网页,并将获取到的信息直接显示的话就会出现乱码的现象,有些时候无法改变服务器端网页的编码(例如获取别的网站的天气预报信息),在这种时候就只能在客户端通过js做编码的工作了.

    下面这段js就是用于将服务器端返回的gbk编码字符串转换为utf编码字符串:


    function gb2utf8(data){
      var glbEncode = [];
      gb2utf8_data = data;
      execScript("gb2utf8_data = MidB(gb2utf8_data, 1)", "VBScript");
      var t=escape(gb2utf8_data).replace(/%u/g,"").replace(/(.{2})(.{2})/g,"%$2%$1").replace(/%([A-Z].)%(.{2})/g,"@$1$2");
      t=t.split("@");
      var i=0,j=t.length,k;
      while(++i<j) {
        k=t[i].substring(0,4);
        if(!glbEncode[k]) {
          gb2utf8_char = eval("0x"+k);
          execScript("gb2utf8_char = Chr(gb2utf8_char)", "VBScript");
          glbEncode[k]=escape(gb2utf8_char).substring(1,6);
        }
        t[i]=glbEncode[k]+t[i].substring(4);
      }
      gb2utf8_data = gb2utf8_char = null;
      return unescape(t.join("%")); }

     


    有了这段代码后,就可以直接对返回的网页内容进行编码了:
    var response=gb2utf8(response.responseBody);


    经过这样的转码后所获得的页面内容就不会有乱码现象了;
    当然,如果服务器端页面采用的是utf-8的编码那就根本不需要进行编码工作了。

  • 相关阅读:
    服务器做系统备份时失败
    PHPMailer中文乱码问题的解决方法
    html字符串分行显示
    Oracle中取某几个数的最大值最小值
    分布式事务之 Seata
    org.apache.dubbo 2.7.7 服务端处理请求及时间轮(失败重试)
    org.apache.dubbo 2.7.7 服务消费源码
    org.apache.dubbo 2.7.7 服务发布注册源码
    org.apache.dubbo 2.7.x 再聚首
    spring-cloud-gateway 服务网关
  • 原文地址:https://www.cnblogs.com/luseike/p/2847037.html
Copyright © 2011-2022 走看看