• javascript GB2312转UTF8


    /*
    * GB2312转UTF8
    * 例:
    * var xx=new GB2312UTF8();
    * var Utf8=xx.Gb2312ToUtf8("你aaa好aaaaa");
    * var Gb2312=xx.Utf8ToGb2312(Utf8);
    * alert(Gb2312);
    */

    function GB2312UTF8(){
    this.Dig2Dec=function(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;
    }
    this.Hex2Utf8=function(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(this.Dig2Dec(ss.substring(0,4)));
    retS += sss.charAt(this.Dig2Dec(ss.substring(4,8)));
    }
    return retS;
    }
    return "";
    }
    this.Dec2Dig=function(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;
    }

    this.Str2Hex=function(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 += this.Dec2Dig(eval(n));
    }
    return digS;
    }
    this.Gb2312ToUtf8=function(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 += this.Hex2Utf8(this.Str2Hex(sa[i].substring(1,5)));
    if(sa[i].length){
    retV += sa[i].substring(5);
    }
    }
    else{
    retV += unescape("%" + sa[i]);
    if(sa[i].length){
    retV += sa[i].substring(5);
    }
    }
    }
    return retV;
    }
    this.Utf8ToGb2312=function(str1){
    var substr = "";
    var a = "";
    var b = "";
    var c = "";
    var i = -1;
    i = str1.indexOf("%");
    if(i==-1){
    return str1;
    }
    while(i!= -1){
    if(i<3){
    substr = substr + str1.substr(0,i-1);
    str1 = str1.substr(i+1,str1.length-i);
    a = str1.substr(0,2);
    str1 = str1.substr(2,str1.length - 2);
    if(parseInt("0x" + a) & 0x80 == 0){
    substr = substr + String.fromCharCode(parseInt("0x" + a));
    }
    else if(parseInt("0x" + a) & 0xE0 == 0xC0){ //two byte
    b = str1.substr(1,2);
    str1 = str1.substr(3,str1.length - 3);
    var widechar = (parseInt("0x" + a) & 0x1F) << 6;
    widechar = widechar | (parseInt("0x" + b) & 0x3F);
    substr = substr + String.fromCharCode(widechar);
    }
    else{
    b = str1.substr(1,2);
    str1 = str1.substr(3,str1.length - 3);
    c = str1.substr(1,2);
    str1 = str1.substr(3,str1.length - 3);
    var widechar = (parseInt("0x" + a) & 0x0F) << 12;
    widechar = widechar | ((parseInt("0x" + b) & 0x3F) << 6);
    widechar = widechar | (parseInt("0x" + c) & 0x3F);
    substr = substr + String.fromCharCode(widechar);
    }
    }
    else {
    substr = substr + str1.substring(0,i);
    str1= str1.substring(i);
    }
    i = str1.indexOf("%");
    }

    return substr+str1;
    }
    }

  • 相关阅读:
    myeclipse连接并运行sql文件
    搜集的一些常用的方法
    使用SolrJ代码导入,发布搜索服务
    solr客户端的使用
    Ubuntu搭建solr搜索服务器
    Intersecting Lines(叉积,方程)
    Labyrinth(记忆化BFS)
    Segments(叉积)
    TOYS(叉积)
    Treasures and Vikings(两次搜索)
  • 原文地址:https://www.cnblogs.com/binbinxiang/p/3529789.html
Copyright © 2020-2023  润新知