2013年8月8日星期四

MySQL 表转换字符集:gbk --> utf8

有表 tb_nickname 结构如下:
CREATE TABLE `tb_nickname` (
  `P_NickName` varchar(22) NOT NULL DEFAULT '',
  PRIMARY KEY (`P_NickName`)
) ENGINE=MyISAM DEFAULT CHARSET=gbk;

表中已有上万条记录,包含大量中文名称。
现在我们要把所有记录的字符集编码由 gbk 转换为 utf8 。
首先我们在新数据库 new_nickdb 中创建新表:
CREATE TABLE `tb_nickname` (
  `P_NickName` varchar(22) NOT NULL DEFAULT '',
  PRIMARY KEY (`P_NickName`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

之后我们导出旧表中的数据,为了保证数据正确导出,应当使用 --default-character-set 指定连接时的字符集为 gbk ,否则连接时会按照数据库默认的连接字符集进行转码,导致导出的数据出现大量的乱码。
mysqldump -uUser -pPass --no-create-info --default-character-set=gbk nickdb tb_nickname > /tmp/tb_nickname.sql

我们是否需要用 vi 打开 tb_nickname.sql ,并把其中的 SET NAMES gbk 手动改为 SET NAMES utf8 呢?答案是否定的,而且千万不要这么做!
起先我是按《深入浅出:MySQL 数据库开发、优化和管理维护》中的步骤来做的,上面说要进行修改,我不知道是否是因为他们的 MySQL 版本比较低——5.0 版本——我的是 5.1 ,这样修改之后是不会通过的。

最后将数据导入新库新表:
mysql --default-character-set=utf8 new_nickdb < tb_nickname.sql

没有评论:

发表评论

使用 Charles 及旧版本 iTunes 下载旧版本 iOS APP

注意:吾爱破解论坛发布的一系列自动化下载软件,比如 iOS APP Store 旧版应用下载 5.1 什么的都不好用,目前只能手动通过 Charles 截留并修改旧版本 iTunes HTTPS 请求达到下载旧版本应用的目的。 从 iOS APP Store 下载的软件都是与用户...