JS将中文转码成'utf-8'

来源:互联网 发布:手机淘宝申诉进度查询 编辑:程序博客网 时间:2024/05/29 18:03

转自:出处

//--------把中文字符转换成Utf8编码------------------------// function EncodeUtf8(s1)  {      var s = escape(s1);      var sa = s.split("%");      var retV ="";      if(sa[0] != "")      {         retV = sa[0];      }      for(var i = 1; i < sa.length; i ++)      {           if(sa[i].substring(0,1) == "u")           {               retV += Hex2Utf8(Str2Hex(sa[i].substring(1,5)));                           }           else retV += "%" + sa[i];      }             return retV;  }  function Str2Hex(s)  {      var c = "";      var n;      var ss = "0123456789ABCDEF";      var digS = "";      for(var i = 0; i < s.length; i ++)      {         c = s.charAt(i);         n = ss.indexOf(c);         digS += Dec2Dig(eval(n));                  }      //return value;      return digS;  }  function Dec2Dig(n1)  {      var s = "";      var n2 = 0;      for(var i = 0; i < 4; i++)      {         n2 = Math.pow(2,3 - i);         if(n1 >= n2)         {            s += '1';            n1 = n1 - n2;          }         else          s += '0';                 }      return s;         }  function Dig2Dec(s)  {      var retV = 0;      if(s.length == 4)      {          for(var i = 0; i < 4; i ++)          {              retV += eval(s.charAt(i)) * Math.pow(2, 3 - i);          }          return retV;      }      return -1;  }   function Hex2Utf8(s)  {     var retS = "";     var tempS = "";     var ss = "";     if(s.length == 16)     {         tempS = "1110" + s.substring(0, 4);         tempS += "10" +  s.substring(4, 10);          tempS += "10" + s.substring(10,16);          var sss = "0123456789ABCDEF";         for(var i = 0; i < 3; i ++)         {            retS += "%";            ss = tempS.substring(i * 8, (eval(i)+1)*8);                                                   retS += sss.charAt(Dig2Dec(ss.substring(0,4)));            retS += sss.charAt(Dig2Dec(ss.substring(4,8)));         }         return retS;     }     return "";  } 


0 0
原创粉丝点击