为了使用全文检索,我把我的mysql升级到了 mysql 4.1.9。根据mysql文档,必须用utf8字符集。装完后,把我以前的表考过来时,用mysql client一搜索,出来的全是累世' ????'的乱码。但新建的表中新insert进去的字符,再select出来时是正常的。这是我以为我搞定了,我很高兴地下载了一个最新版的 mysql jdbc driver :jconnector-3.0.16,不幸发生了,出来的全是乱码。我用的测试表名是 ttt ,后来我打开 ttt.MYD 文件,发现保存汉字的字节流的确不是正确的utf-8编码的字节流。
最后我用jdbc插入汉字,用jdbc select 出来是正确的。但这是 mysql-client select出来是乱码。查看一下mysql client 命令行帮助
,发现其也有一个 --default-character-set的选项,运行 mysql --default-character-set=utf8 后还是不行,最后试 mysql --default-character-set=gbk才成功。看来mysql client 的字符集选项要设成和操作系统一致才行。
最后讲讲我在查找mysql字符集方面文档时获得的可能对你有益的信息
1)msyql 4.1 用 jconnector 3.0.16时(此版本以前的都是传统方式),不管jdbc url 后指定用什么字符集(useUnicode=true&characterEncoding=gbk),它都自动用 mysql server 设定的字符集。除非再加一个参数 useOldUTF8Behavior=true&useUnicode=true&characterEncoding=iso8859-1才能兼容以前的数据库表。
2)可以用 alter database test character set utf8 命令修改数据库的字符集(未验证),所以不同的数据库字符集可以不一样。有人说每个表都可以不一样,不过我没试过。
最后我用jdbc插入汉字,用jdbc select 出来是正确的。但这是 mysql-client select出来是乱码。查看一下mysql client 命令行帮助
,发现其也有一个 --default-character-set的选项,运行 mysql --default-character-set=utf8 后还是不行,最后试 mysql --default-character-set=gbk才成功。看来mysql client 的字符集选项要设成和操作系统一致才行。
最后讲讲我在查找mysql字符集方面文档时获得的可能对你有益的信息
1)msyql 4.1 用 jconnector 3.0.16时(此版本以前的都是传统方式),不管jdbc url 后指定用什么字符集(useUnicode=true&characterEncoding=gbk),它都自动用 mysql server 设定的字符集。除非再加一个参数 useOldUTF8Behavior=true&useUnicode=true&characterEncoding=iso8859-1才能兼容以前的数据库表。
2)可以用 alter database test character set utf8 命令修改数据库的字符集(未验证),所以不同的数据库字符集可以不一样。有人说每个表都可以不一样,不过我没试过。