Jdbc 连接 Mysql 时的
中文乱码问题
2007-06-27
在用 jdbc 向 mysql 数据库插入中文时出现了乱码,严格来说是通
过 Hibernate。记录下搜索和查文档以后找到的解决办法。
首先要告诉数据库要插入的字符串使用的字符集,mysql 默
认使用的字符集是 latin1。我要保存的字符串是 UTF-8 编码的(字
符集是 Unicode),所以包含这个字段的表应该使用 UTF-8 编码。
这里有几种解决办法。
1. 在建立数据库的时候指定数据库的字符集编码,这样,
这个数据库的所有表都会默认使用数据库的字符集编码。如 create
database foo charset utf8;
2. 在建表的时候指定字符集编码。如 create table foo (id
char(20)) charset utf8;
3. 指定某一列使用的字符集编码。如 create table foo (id
char(20) charset utf8);
如果你有需要的话还可以指定字符排序的规则,也就是指定
collation,如 create database foo charset utf8 collate
utf8_general_ci;,同样也可以指定单独的表、列使用的 collation
规则。