将 Grails 1.0.4 与 MySQL 一起使用时,自动生成的数据库表的字符集似乎默认为 ISO-8859-1。我宁愿将所有内容都存储为纯 UTF-8。那可能吗?
从自动生成的数据库定义中:
ENGINE=MyISAM AUTO_INCREMENT=1 DEFAULT CHARSET=latin1;
注意“latin1”部分。
大多数 MySQL 安装默认为 latin1,因此如果没有另外说明,驱动程序将使用默认值。在连接 URL 中添加字符集指令就足够了,例如:
jdbc:mysql://localhost/databaseName?useUnicode=yes&characterEncoding=UTF-8
为此,MySQL 连接器 JAR 必须是版本 5(3.x 不起作用)。
还必须在创建过程中为数据库设置默认字符编码
CREATE DATABASE databaseName DEFAULT CHARACTER SET utf8;
显然,您必须通过为 Hibernate定义自己的自定义 SQL 方言(Grails 用于持久性)来解决问题。
您必须使用 collation 创建数据库utf8_genenal_ci
。然后将此字符串添加到连接字符串:
useUnicode=true&characterEncoding=utf-8"