UTF-8 仅在 Grails 数据库表中
Posted
技术标签:
【中文标题】UTF-8 仅在 Grails 数据库表中【英文标题】:UTF-8 only in Grails database tables 【发布时间】:2010-10-03 15:37:47 【问题描述】:当 Grails 1.0.4 与 mysql 一起使用时,自动生成的数据库表的字符集似乎默认为 ISO-8859-1。我宁愿将所有内容都存储为纯 UTF-8。这可能吗?
来自自动生成的数据库定义:
ENGINE=MyISAM AUTO_INCREMENT=1 DEFAULT CHARSET=latin1;
注意“latin1”部分。
【问题讨论】:
【参考方案1】:大多数 MySQL 安装默认为 latin1,因此如果没有另外说明,驱动程序将使用默认值。在连接 URL 中添加字符集指令就足够了,例如:
jdbc:mysql://localhost/databaseName?useUnicode=yes&characterEncoding=UTF-8
为此,MySQL 连接器 JAR 必须是版本 5(3.x 将不起作用)。
来源:MySQL Reference manual: Using Character Sets and Unicode
【讨论】:
【参考方案2】:还必须在创建时为数据库设置默认字符编码
CREATE DATABASE databaseName DEFAULT CHARACTER SET utf8;
【讨论】:
【参考方案3】:显然,您必须通过 defining your own custom SQL dialect 破解您的 Hibernate(Grails 用于持久性)。
【讨论】:
【参考方案4】:您必须使用排序规则utf8_genenal_ci
创建数据库。然后将此字符串添加到连接字符串:
useUnicode=true&characterEncoding=utf-8"
【讨论】:
以上是关于UTF-8 仅在 Grails 数据库表中的主要内容,如果未能解决你的问题,请参考以下文章
Grails数据库迁移-将插入值手动更改日志记录到表中的特定列