标签: gbk

  • Discuz MYSQL数据库 大文件 GBK编码转UTF-8 图文教程

    Discuz MYSQL数据库 大文件 GBK编码转UTF-8 图文教程

    我们这里的论坛由于使用了十几年,之前的版本是Discuz! X3.2 后来无缝升级到 Discuz! X3.3,但是还是快照被劫持discuz快照被劫持的解决办法,而且Discuz! X3.3 已经不再更新了。所以我们这里打算到Discuz! X3.4,但是官方版本最新的版本是UTF-8的编码,所以我们这里先把数据库导出后转编码重新导入再升级版本。

    关于如何导出Mysql数据库,请看这里:mysqldump gzip 备份及还原 压缩 图文教程

    gunzip解压文件

    gunzip laoji.org_2017-12-12-03-30-01.sql.gz

    .sql文件转gbk编码到utf-8,并替换对于的create语句:

    我们这里的文件还是挺大的,如果用Windows打开的话肯定是崩溃了,所以我们这里直接在Linux进行转码操作。

    ls -lh laoji.org_2017-12-12-03-30-01.sql

    -rw-r–r– 1 root root 6.4G Dec 12 03:40 laoji.org_2017-12-12-03-30-01.sql

    ls -lh laoji.org.cat.tmp.sql

    -rw-r–r– 1 root root 9.6G Dec 12 09:37 laoji.org.cat.tmp.sql

    使用iconv转码:

    sed 's/CHARSET=gbk/CHARSET=utf8/g' laoji.org_2017-12-12-03-30-01.sql | iconv -c -f gb18030 -t utf-8  > laoji.org.utf8.sql

    重新生成的utf-8文件就是 laoji.org.utf8.sql 了。

    注意:如果文件过大,很容易倒是shell丢失,可以不时的使用空格或者回车保持shell的连接。

    不懂的请参照linux下的:grep、sed 命令,linux shell 命令行 wordpress 替换 谷歌字体 fonts.googleapis 一键命令.
    以上命令是将sql语句里面的:

    CHARACTER SET=gbk
    变成
    CHARACTER SET=utf-8

    将COMMENT 后面的一些乱码去掉,有些可能少了分号的:

    sed -i "s/COMMENT.*,/,/g" `grep -lr "COMMENT.*," laoji.org.utf8.sql`

    导入数据库

    mysql -uxjjbbs -p xjjbbs --default-character-set=utf8 < laoji.org.utf8.sql

    然后从git下载最新的Discuz! X3.4即可。

WeChat