Discuz!官方免费开源建站系统

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

[已解决] 以DiscuzX2.5为例,轻松转换数据库编码,实现GBK和UTF8互转

[复制链接]
回帖奖励 2 枚金币      回复本帖可获得 2 枚金币奖励! 每人限 1 次(中奖概率 30%)
myp4p 发表于 2013-5-13 23:36:00 | 显示全部楼层 |阅读模式
本帖最后由 myp4p 于 2013-5-14 12:19 编辑

原文地址:以DiscuzX2.5为例,轻松转换数据库编码,实现GBK和UTF8互转

经常遇到有人需要在常见的GBK和UTF8之间转换,这里以DiscuzX2.5为例,由SC_UTF8转换为SC_GBK,结合我自己的一些经验,提供一个较为建议的数据库编码转换方法,此方法不求通用,却能解决大部分中小站长遇到的类似问题。

总体思路其实挺简单的,我们先通过SQL语句获取到数据库里面的全部表名,然后对所有需要转换的表执行一次对应的编码转换。

这里我们使用到的工具是Navicat for Mysql  10.1,这是一个非常好用的数据库管理工具,稳定易用,适合新手。Navicat下载地址>>>>

获取数据表名

开始前,请先仔细阅读文末的注意事项。

Discuz的数据表比较多,为了能批量转换,这里我们先想办法获取一下全部表名。当然,这里使用到的方法并不是单纯读取表名,而是生成一串带有这些表名的SQL语句,以便下一步能使用。

我们用Navicat连接上我们的数据库,然后执行一次查询,查询用的语句如下,然后下面有对应的操作图例。
  1. Select CONCAT( 'ALTER TABLE ', table_name, ' RENAME TO ', 111,';' )  FROM information_schema.tables  Where table_name LIKE 'pre_%';
复制代码
这个语句里面需要我们注意一下的是pre_这一段,这里是特意指定一下特定的表前缀,DiscuzX默认的是pre_,如果你改过,就把这里改成你的







执行完上面的语句后,我们就会得到如上图的结果,我们把区域3中的内容全部复制出来,这里可以使用ctrl+A多选,然后右键复制即可。内容复制出来后,我们将内容贴到一个txt里面。





贴到txt里面后,用记事本的批量替换功能,将其中的    RENAME TO  111 这一段替换为DEFAULT CHARACTER SET=gbk COLLATE=gbk_chinese_ci,这一段是转换为gbk,如果你是从gbk转换为utf8的话,则相应的替换为DEFAULT CHARACTER SET=utf8 COLLATE=utf8_general_ci即可,如上图所示。

转换数据库编码

接下来我们将批量替换好之后的所有语句再复制到Navicat的查询器内执行,这个查询器就是我们上面步骤有用到的查询,如下图例



接着我们只需要等语句执行完毕即可。

注意事项

1、执行此操作前,请务必先完整备份数据库,以免转换过程中出现差错造成数据丢失等问题。

2、转换过程中应尽量避免再对数据库进行读写。

3、最后的转换步骤有可能稍微需要一点时间,视数据库性能和大小而定,需要耐心等待。

4、此方法仅针对数据库,如果你是要完整转换一个DZ,还需要替换所有的文件,包括模板和插件,需要仔细更新所有缓存。

5、本方法不完全保证100%安全性,仅按个人经验提供方法,遇到问题责任自负

AD.   本人的 摩托坊摩托车论坛  寻友情链接,要求PR>=5,摩托车、汽车相关的社区论坛,有兴趣的私聊我,谢谢

靠,编辑器问题越来越多了,康盛啥时候也来修补下吧

某些傻逼最好自觉离我的帖子远点,否则哪天我忍不住了会大开杀戒的

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x

评分

2

查看全部评分

allthebest 发表于 2013-5-13 23:40:13 | 显示全部楼层
5、本方法不完全保证100%安全性,仅按个人经验提供方法,遇到问题责任自负


回复

使用道具 举报

 楼主| myp4p 发表于 2013-5-13 23:43:57 | 显示全部楼层
某些傻逼最好自觉离我的帖子远点,否则哪天我忍不住了会大开杀戒的
回复

使用道具 举报

tsyj 发表于 2013-5-13 23:57:50 | 显示全部楼层
{:soso__11895683562591303207_2:}
回复

使用道具 举报

ankangnew 发表于 2013-5-14 02:31:30 | 显示全部楼层

回帖奖励 +2 枚金币

来支持一下啦
回复

使用道具 举报

朕__ 发表于 2013-5-14 08:38:31 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

可爱的轩轩 发表于 2013-5-14 08:43:54 | 显示全部楼层
昨天X3.0都出来了。。
回复

使用道具 举报

cuijf_1983 发表于 2013-5-14 08:43:56 | 显示全部楼层

回帖奖励 +2 枚金币

早点发现就好了。
回复

使用道具 举报

可爱的轩轩 发表于 2013-5-14 08:44:56 | 显示全部楼层
额 竟然没有中奖
回复

使用道具 举报

可爱的轩轩 发表于 2013-5-14 08:45:33 | 显示全部楼层
真是太郁闷了,都第三次了
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|Discuz! 官方站 ( 皖ICP备16010102号 )star

GMT+8, 2024-11-23 06:38 , Processed in 0.037524 second(s), 8 queries , Gzip On, Redis On.

Powered by Discuz! X3.4

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表