I russische Zeichen in mysql mit einer Grails-Anwendung zu speichern versuchen jedoch in der DB als ????
Russische Zeichen werden als ???? in mysql in Grails-Anwendung
Mein Datasource-Mapping es gespeichert wird:
dataSource {
pooled = true
driverClassName = "com.mysql.jdbc.Driver"
dialect = "org.hibernate.dialect.MySQL5InnoDBDialect"
username = "sa"
password = ""
}
....
url = "jdbc:mysql://localhost/mydb?useUnicode=true&zeroDateTimeBehavior=convertToNull&characterEncoding=UTF-8"
My Domain-Klasse
class Lang {
String langText
static constraints = {
langText nullable: true, blank: true
}
static mapping = {
langText type: 'text'
}
}
Encoding der lang
Tabelle utf8
mysql> SELECT CCSA.character_set_name FROM information_schema.`TABLES` T,
-> information_schema.`COLLATION_CHARACTER_SET_APPLICABILITY` CCSA
-> WHERE CCSA.collation_name = T.table_collation
-> AND T.table_name = "lang";
+--------------------+
| character_set_name |
+--------------------+
| utf8 |
+--------------------+
1 row in set (0.01 sec)
Encoding für die Spalte lang_text
ist utf8
mysql> SELECT character_set_name FROM information_schema.`COLUMNS`
-> WHERE table_name = "lang"
-> AND column_name = "lang_text";
+--------------------+
| character_set_name |
+--------------------+
| utf8 |
+--------------------+
1 row in set (0.01 sec)
Dies ist, wie ich die Informationen an die DB speichere:
def lang() {
Lang l = new Lang()
l.langText = "Здравствуйте, меня зовут Энтони";
l.save(flush: true)
}
Aber wenn ich in der Datenbank suchen, die Informationen zu sein gespeichert als ?????
mysql> select lang_text from lang where id = (select max(id) from lang);
+---------------------------------+
| lang_text |
+---------------------------------+
| ????????????, ???? ????? ?????? |
+---------------------------------+
1 row in set (0.00 sec)
Dies scheint ein GORM/Hibernate Problem zu sein, denn wenn ich die Zeichenfolge in die Datenbank unter Verwendung von mysql eingeben, fügt fein:
mysql> insert into lang (lang_text) values ("Здравствуйте, меня зовут Энтони");
Query OK, 1 row affected, 1 warning (0.10 sec)
mysql> select lang_text from lang where id = (select max(id) from lang);
+------------------------------------------------------------+
| lang_text |
+------------------------------------------------------------+
| Здравствуйте, меня зовут Энтони |
+------------------------------------------------------------+
1 row in set (0.05 sec)
prüfen this: [Grails-nicht-codierende-the-Unicode-Zeichen-richtig] (http: // Stackoverflow .com/questions/10511497/grails-nicht-Encoding-the-Unicode-Zeichen-richtig) – swiatows