Grails 1.0.4 を MySQL と一緒に使用すると、自動生成されたデータベース テーブルの文字セットがデフォルトで ISO-8859-1 になっているようです。すべてを純粋な UTF-8 として保存したいのです。それは可能ですか?
自動生成されたデータベース定義から:
ENGINE=MyISAM AUTO_INCREMENT=1 DEFAULT CHARSET=latin1;
「latin1」の部分に注意してください。
ほとんどの MySQL インストールはデフォルトで latin1 に設定されているため、特に指示がない限り、ドライバーはデフォルト値に従います。接続 URL の先頭に charset ディレクティブを追加するだけで十分です。次に例を示します。
jdbc:mysql://localhost/databaseName?useUnicode=yes&characterEncoding=UTF-8
これが機能するには、MySQL コネクタ JAR がバージョン 5 である必要があります (3.x は機能しません)。
また、作成時にデータベースのデフォルトの文字エンコーディングを設定する必要があります
CREATE DATABASE databaseName DEFAULT CHARACTER SET utf8;
どうやら、Hibernate用に独自のカスタムSQLダイアレクト(Grailsが永続性に使用する)を定義することで、自分のやり方をハックする必要があるようです。
データベース用の照合順序を作成する必要がありますutf8_genenal_ci
。次に、この文字列を接続文字列に追加します。
useUnicode=true&characterEncoding=utf-8"