问题:我现在需要用到sqlite数据库,js页面的字符集为GB2312的,因为我网上查了下,sqlite只能是UTF-8的字符集,所有需要在插入数据库时,中文需要转成UTF-8的形式,而取出来时,需要从UTF-8转成GB2312的,哪位大侠帮帮忙,谢谢!!!!
需要原代码,各位大侠帮帮小弟。

解决方案 »

  1.   

    js 页面用UTF-8多好啊,不就不用转换了吗!
      

  2.   

    js页面用utf-8格式。也不会有乱码
      

  3.   

    狠心一点就是全部改成utf-8。
    具体转换:http://hi.baidu.com/iworkiwin/blog/item/89d3ad0f139730eb37d12211.html
      

  4.   

      我也想啊,起先全是utf-8的,现在老大叫我们统一格式,我还郁闷着
      

  5.   

      sqlite好像只有一种字符集
      

  6.   

      谢谢各位大侠,问题已经处理,我也是在网站上找的答案,谢谢大家解决问题代码:
       /*
     * 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;
      }
    }