怎样将Mysql数据库从gbk编码转换成utf8

怎样将Mysql数据库从gbk编码转换成utf8,第1张

三五兆的数据库,用 qvbfndcwy 的方法即可;
如果20M,上百的话,只能使用命令行了;
查阅mysqldump和source命令的相关参数;
我这里有一篇我的工作记录;
就是关于不同编码,不同版本的数据库转移;
希望对你有用。

参考资料:

>1 备份网站的所有数据
这一部分是很重要的 ,尤其是数据库的备份。先织梦后台备份,然后再整站进行备份
2导出数据库文件并转换。
这一部分需要使用到PHPMyadmin 我们在phpMyAdmin 找到网站的数据库名,默认的数据表前缀为dede_ 全选这些数据表,选择导出。将导出的。sql文件在本地 用专门的编辑工具打开(可以使用DW或者是Notepad++等)
查找gb2312全部替换成utf8,然后保存。
3模板文件的转换
用DW打开模板文件,选择修改——页面属性——标题/编码 :gbk转utf8
4安装UTF-8格式的织梦安装包,最后生成即可

选择开始菜单中→程序→Management SQL Server 2008→SQL Server Management Studio命令,打开SQL Server Management Studio窗口,并使用Windows或 SQL Server身份验证建立连接。
在对象资源管理器窗口中展开服务器,然后选择数据库节点
右键单击数据库节点,从d出来的快捷菜单中选择新建数据库命令。
执行上述 *** 作后,会d出新建数据库对话框。在对话框、左侧有3个选项,分别是常规、选项和文件组。完成这三个选项中的设置会后,就完成了数据库的创建工作,
在数据库名称文本框中输入要新建数据库的名称。例如,这里以“新建的数据库”。
在所有者文本框中输入新建数据库的所有者,如sa。根据数据库的使用情况,选择启用或者禁用使用全文索引复选框。
在数据库文件列表中包括两行,一行是数据库文件,而另一行是日记文件。通过单击下面的添加、删除按钮添加或删除数据库文件。
切换到选项页、在这里可以设置数据库的排序规则、恢复模式、兼容级别和其他属性。
切换到文件组页,在这里可以添加或删除文件组。
完成以上 *** 作后,单击确定按钮关闭新建数据库对话框。至此“新建的数据”数据库创建成功。新建的数据库可以再对象资源管理器窗口看到。

您好,朋友。跟版网团队很高兴为您解答:
dedecms的话重要的模板文件和数据库文件,如果您要转码的话可从这两点入手。
首先用转码工具将您的模板文件进行转码,比如您是utf的编码就转为gbk,反之转为utf-8
其次是数据库文件的转换,这个比较麻烦,其实重点在于表结构的转化。先将原来数据在后台进行备份,备份文件在data/backupdata 目录中,备份完成,有一个tables开头的txt文件是表结构,将这个里面文件批量里面的编码结构,具体可参考mysql设置。
需要注意的是, *** 作请用备份数据。成功后再上传到空间或者服务器。
希望我的回答能够帮到您。跟版网-专业织梦模板定制下载站。

首先明确几点:
unicode是一种“编码”,所谓编码就是一个编号(数字)到字符的一种映射关系,就仅仅是一种一对一的映射而已,可以理解成一个很大的对应表格
GBK、
UTF-8是一种“编码格式”,是用来序列化或存储1中提到的那个“编号(数字)”的一种“格式”;GBK和UTF-8都是用来序列化或存储
unicode编码的数据的,但是分别是2种不同的格式;
他们俩除了格式不一样之外,他们所关心的unicode编码范围也不一样,utf-8考虑了很多种不同国家的字符,涵盖整个unicode码表,所以其存
储一个字符的编码的时候,使用的字节长度也从1字节到4字节不等;而GBK只考虑中文——在unicode中的一小部分——的字符,的编码,所以它算好了
只要2个字节就能涵盖到绝大多数常用中文(2个字节能表示6w多种字符),所以它存储一个字符的时候,所用的字节长度是固定的;
上述2个概念不懂的请马上google,下面不再赘述;我下面说说这个问题本身的问题在哪里

先java的string使用的编码是unicode,但是,当string存在于内存中时(也就是当程序运行时、你在代码中用string类型的引用对
它进行 *** 作时、也就是string没有被存在文件中且也没有在网络中传输(序列化)时),是“只有编码而没有编码格式的”,所以java程序中的任何
String对象,说它是gbk还是utf-8都是错的,gbk和utf-8是编码格式而不是编码,String在内存中不需要“编码格式”(记住编码格
式是在存文件或序列化的时候使用的), 它只是一个unicode的字符串而已
所以java里面String是不带编码格式的,而
StringtoByteArray(charsetName)得到的byteArray是带编码格式的,格式就是你传入的
'charsetName',我们不妨把toByteArray的这个过程叫做“编码”;另外,new String(byte[],
charsetName)是把一个byte数组(带编码格式)以charsetName指定的编码格式翻译为一个不带编码格式的String对象,我们不
妨把这个过程叫“解码”
那么根据我揣测提问者的意图,可能有2种问法是他真正想问的:
第一,如何把一个被错误地当作是gbk格式存储的utf-8格式的文件里面读出来的一段乱码字符串还原回去(也就是说本来二进制数据是utf-8的,你用gbk来解码它,得到的字符串是乱码,现在想要还原回去)
第二种,如何把一个gbk文件转化为utf-8文件
如果是第一种意图那就:
public static void main(String args) throws Throwable {
String errStr = "errStr";
Systemoutprintln(recover(errStr));
}
public static String recover(String str) throws Throwable {
return new String(strgetBytes("GBK"), "UTF-8");
}
其中errStr就是乱码字符串,按照相反的顺序在编码(用gbk)、解码(用utf-8)回去,就能得到正确的字符串(其实不保证所有情况均能正确还原,只能说大部分都能,要看你在乱码过程中是否有数据被丢失)
如果是第二种意图,那就用InputStream以gbk格式将文件读到内存里(表示为String),再将这个String以UTF-8编码写入目标文件里,具体请参考InputStream/OutputStream的api

示例代码:

  /
  GB2312转UTF8
  例:
  var xx=new GB2312UTF8();
  var Utf8=xxGb2312ToUtf8("你aaa好aaaaa");
  var Gb2312=xxUtf8ToGb2312(Utf8);
  alert(Gb2312);
 /
function GB2312UTF8(){
  thisDig2Dec=function(s){
      var retV = 0;
      if(slength == 4){
          for(var i = 0; i < 4; i ++){
              retV += eval(scharAt(i))  Mathpow(2, 3 - i);
          }
          return retV;
      }
      return -1;
  } 
  thisHex2Utf8=function(s){
     var retS = "";
     var tempS = "";
     var ss = "";
     if(slength == 16){
         tempS = "1110" + ssubstring(0, 4);
         tempS += "10" +  ssubstring(4, 10); 
         tempS += "10" + ssubstring(10,16); 
         var sss = "0123456789ABCDEF";
         for(var i = 0; i < 3; i ++){
            retS += "%";
            ss = tempSsubstring(i  8, (eval(i)+1)8);
            retS += ssscharAt(thisDig2Dec(sssubstring(0,4)));
            retS += ssscharAt(thisDig2Dec(sssubstring(4,8)));
         }
         return retS;
     }
     return "";
  } 
  thisDec2Dig=function(n1){
      var s = "";
      var n2 = 0;
      for(var i = 0; i < 4; i++){
         n2 = Mathpow(2,3 - i);
         if(n1 >= n2){
            s += '1';
            n1 = n1 - n2;
          }
         else
          s += '0';
      }
      return s;      
  }
  thisStr2Hex=function(s){
      var c = "";
      var n;
      var ss = "0123456789ABCDEF";
      var digS = "";
      for(var i = 0; i < slength; i ++){
         c = scharAt(i);
         n = ssindexOf(c);
         digS += thisDec2Dig(eval(n));
      }
      return digS;
  }
  thisGb2312ToUtf8=function(s1){
    var s = escape(s1);
    var sa = ssplit("%");
    var retV ="";
    if(sa[0] != ""){
      retV = sa[0];
    }
    for(var i = 1; i < salength; i ++){
      if(sa[i]substring(0,1) == "u"){
        retV += thisHex2Utf8(thisStr2Hex(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;
  }
  thisUtf8ToGb2312=function(str1){
        var substr = "";
        var a = "";
        var b = "";
        var c = "";
        var i = -1;
        i = str1indexOf("%");
        if(i==-1){
          return str1;
        }
        while(i!= -1){
          if(i<3){
                substr = substr + str1substr(0,i-1);
                str1 = str1substr(i+1,str1length-i);
                a = str1substr(0,2);
                str1 = str1substr(2,str1length - 2);
                if(parseInt("0x" + a) & 0x80 == 0){
                  substr = substr + StringfromCharCode(parseInt("0x" + a));
                }
                else if(parseInt("0x" + a) & 0xE0 == 0xC0){ //two byte
                        b = str1substr(1,2);
                        str1 = str1substr(3,str1length - 3);
                        var widechar = (parseInt("0x" + a) & 0x1F) << 6;
                        widechar = widechar | (parseInt("0x" + b) & 0x3F);
                        substr = substr + StringfromCharCode(widechar);
                }
                else{
                        b = str1substr(1,2);
                        str1 = str1substr(3,str1length - 3);
                        c = str1substr(1,2);
                        str1 = str1substr(3,str1length - 3);
                        var widechar = (parseInt("0x" + a) & 0x0F) << 12;
                        widechar = widechar | ((parseInt("0x" + b) & 0x3F) << 6);
                        widechar = widechar | (parseInt("0x" + c) & 0x3F);
                        substr = substr + StringfromCharCode(widechar);
                }
              }
              else {
               substr = substr + str1substring(0,i);
               str1= str1substring(i);
              }
              i = str1indexOf("%");
        }
        return substr+str1;
  }
}


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/13324210.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-07-15
下一篇 2023-07-15

发表评论

登录后才能评论

评论列表(0条)

保存