将Grails 1.1与MySQL一起使用时,自动生成的数据库表的字符集似乎默认为ISO-8859-1。我宁愿将所有内容存储为纯UTF-8。这可能吗?
从自动生成的数据库定义:
ENGINE=MyISAM AUTO_INCREMENT=1 DEFAULT CHARSET=latin1;
注意“latin1”部分。
描述了适用于Grails 1.0的变通方法here。使用Grails 1.1时,这种解决方法似乎不起作用。 dataSource.dialect参数似乎被忽略。
答案 0 :(得分:5)
似乎使用了数据库的默认字符集。
我通过使用utf8作为默认字符集创建数据库来解决这个问题:
CREATE DATABASE name_of_database DEFAULT CHARACTER SET utf8;
答案 1 :(得分:2)
嗨我有类似的问题,从MySQL读取很好,但写入将一些字符转换为“?” (问号)。这解决了它: url =“jdbc:mysql:// localhost:3306 / your-db-name?useUnicode = true& characterEncoding = utf-8
mh23
答案 2 :(得分:0)
以下是StackOverflow上同样问题的解决方案: UTF-8 only in Grails database tables
它对我有用,但它不优雅......
答案 3 :(得分:-1)
您还可以在DataSource.groovy文件中向Hibernate / JDBC URL添加一些属性。例如
url =“jdbc:mysql:// localhost:3306 / your-db-name?useUnicode = true”
MySQL还有其他与字符集相关的参数。我不太确定你需要哪些以及有多少它们才能获得预期的行为。