解决方法: 将表结构和数据dump成文本脚本,使用支持utf8编码的编辑器打开脚本(推荐EditPlus),去除指定列的字符集gb2312的修饰符(因为表的字符集已经是utf8,所以去除列的字符集修饰后,列的字符集会自动继承表的设置,成为utf8)。如sql文件中其中一行: `name` varchar(32) character set gb2312 NOT NULL, 删除其中字符集部分: `name` varchar(32) NOT NULL, 如果存储的数据不是utf8的编码,还要使用EditPlus的 文档/文档编码方式 功能将数据转换为utf8编码。 修改转换完毕后保存脚本,备份旧表,执行这个脚本文件,列的字符集设定就统一为utf8了。
心得: 可以看出,MYSQL(本文所说的mysql版本为5.067)的字符集设定分为4个层次: 1.服务器默认设置 my.ini 中的 default-character-set=utf8 2.建立数据库时的字符集指定:CREATE DATABASE CHARACTER SET utf8; 3.建立表时的字符集指定:CREATE TABLE `db_database`.`tb_test` (....) DEFAULT CHARSET=utf8; 4.建立列时,指定的字符集:ADD COLUMN `name` VARCHAR(45) CHARACTER SET utf8