« | August 2025 | » | 日 | 一 | 二 | 三 | 四 | 五 | 六 | | | | | | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | | | | | | | |
| 公告 |
戒除浮躁,读好书,交益友 |
Blog信息 |
blog名称:邢红瑞的blog 日志总数:523 评论数量:1142 留言数量:0 访问次数:9691691 建立时间:2004年12月20日 |

| |
[数据库]Mysql与java的中文问题 原创空间, 软件技术
邢红瑞 发表于 2005/3/2 14:00:53 |
Mysql 4.0之前用缺省字符集latin1,连接加useUnicode=true&characterEncoding=GBK可以了,升级到4.1,mysql字符集要设成utf8,可以在安装时设置,也可以在my.ini里改(需要重新启动mysql)#必须在[mysqld]这段[client] default-character-set=gbk [mysqld] default-character-set=gbk skip-character-set-client-handshake
skip-character-set-client-handshake 是由于 4.1 的 BUG 引入的设置,设置后重启server,用mysqladmin variables命令检查。mysql 3.1.6以后jdbc驱动连接无需加characterEncoding,会自动检测。实际上server端字符集不是utf8的话,加了也没用(jdbc:mysql://localhost/test&characterEncoding=UTF-8或者GBK)可能还会报错;是utf8的话,加不加都行,4.1以上版本还可以单独指定表的字符集。
如果你已经创建了数据库,并且是latin1编码的,还需要修改具体数据库和表的charset修改数据库的字符集:
ALTER DATABASE `dbname` CHARACTER SET utf8 COLLATE utf8_general_ci;
修改具体表的字符集:
ALTER TABLE `tablename`CHARACTER SET utf8 COLLATE utf8_general_ci;
在建表时指定字符集:
DROP TABLE IF EXISTS `area`;CREATE TABLE `area` ( `code` varchar(4) NOT NULL default '', `name` varchar(10) NOT NULL default '', PRIMARY KEY (`code`)) ENGINE=InnoDB DEFAULT CHARSET=utf8;
其实有更简单的办法,在进行查询前,只要执行SET character_set_results = NULL就可以。而且这是不管是转换了的还是没转换的字段都不会出现乱码。而转换了的字段可以正常的对中文进行排序。 |
|
|