# Beim deployen und initialisieren der DB werden Umlaute nicht gespeichert



## Raphalon (10. Apr 2012)

Hallo,

wenn ich meine Applikation via mvn deploye, wird durch die Hibernate-Einstellungen (siehe unten) jedes mal die DB neu initialisiert. Die Befehle stehen in der import.sql. Leider werden dabei Umlaute nicht gespeichert.

Das Merkwürdige: die Anwendung selbst speichert die Umlaute in der DB. Nur bei der Initialisierung klappt das nicht.


In eclipse ist eigentlich alles korrekt eingestllt. Das Text file encoding für den Workspace ist Cp1252.
Unter Preferences > Content Types gibt es kein SQL - File, für das ein Encoding eingestellt werden könnte.
Für die Datei import.sql ist der Default ("inherited from container: UTF-8") eingestellt.
da ich mvn verwende, habe ich als Zeichensatz auch UTF-8 eingestellt - siehe unten das pluginManagement
wenn ich die DML - Befehle manuell z.B. in phpMyAdmin ausführe, werden auch die Umlaute gespeichert
für die DB ist eingstellt: MySQL-Zeichensatz: UTF-8 Unicode (utf8)
der Zeichensatz / Kollation der MySQL-Verbindung ist "utf8-general-ci"
an Hibernate kann es eigentlich auch nicht liegen, weil die Anwendung selbst ja die Umlaute speichert
ich habe auch schon die DB neu aufgesetzt.
Wo kann ich noch nachsehen?

[XML]<persistence xmlns="http://java.sun.com/xml/ns/persistence"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd"
	version="1.0">
	<persistence-unit name="primary" transaction-type="JTA">
		<provider>org.hibernate.ejb.HibernatePersistence</provider>
		<jta-data-source>java:jboss/datasources/kds</jta-data-source>
		<properties>
			<property name="hibernate.dialect" value="org.hibernate.dialect.MySQLDialect" />
			<property name="hibernate.show_sql" value="true" />
			<property name="hibernate.format_sql" value="true" />
			<property name="hibernate.use_sql_comments" value="true" />
			<property name="hibernate.hbm2ddl.auto" value="create-drop" />
		</properties>
	</persistence-unit>
</persistence>[/XML]
[XML]<pluginManagement>
	<plugins>
		<plugin>
			<groupId>org.apache.maven.plugins</groupId>
			<artifactId>maven-compiler-plugin</artifactId>
			<version>2.3.2</version>
			<configuration>
				<source>1.6</source>
				<target>1.6</target>
				<encoding>UTF-8</encoding>   <!-- vorher: ISO-8859-1 -->
			</configuration>
		</plugin>[/XML]

Gruß,

Raphalon


----------



## fastjack (10. Apr 2012)

Du mußt da nachsehen, wo dir Connection-Url angegeben wird.

http://www.java-forum.org/allgemein...probleme-stringvergleichen-windows-linux.html


----------



## Raphalon (10. Apr 2012)

Habe den Connection String via Jboss-Console ergänzt als 
	
	
	
	





```
jdbc:mysql://localhost:3306/kds?useUnicode=true&characterEncoding=utf8
```
. Er wurde korrekt in die standalone.xml übernommen. Leider klappt es immer noch nicht. Habe auch folgendes noch erfolglos versucht https://community.jboss.org/message/643825.

```
mysql> status;
--------------
mysql  Ver 14.14 Distrib 5.1.44, for apple-darwin8.11.1 (i386) using  EditLine wrapper

Connection id:		58
Current database:	kds
Current user:		root@localhost
SSL:			Not in use
Current pager:		stdout
Using outfile:		''
Using delimiter:	;
Server version:		5.1.44 Source distribution
Protocol version:	10
Connection:		Localhost via UNIX socket
Server characterset:	utf8
Db     characterset:	utf8
Client characterset:	utf8
Conn.  characterset:	utf8
UNIX socket:		/Applications/XAMPP/xamppfiles/var/mysql/mysql.sock
Uptime:			1 hour 6 min 53 sec

Threads: 21  Questions: 10164  Slow queries: 0  Opens: 690  Flush tables: 1  Open tables: 4  Queries per second avg: 2.532
--------------
```


----------



## maki (10. Apr 2012)

Hi,



> In eclipse ist eigentlich alles korrekt eingestllt. Das Text file encoding für den Workspace ist Cp1252.





> da ich mvn verwende, habe ich als Zeichensatz auch UTF-8 eingestellt - siehe unten das pluginManagement


musst dich für einen Zeichensatz entscheiden, persönlich tendiere ich meist zu utf-8.

Das hier:
[xml]
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>2.3.2</version>
            <configuration>
                <source>1.6</source>
                <target>1.6</target>
                <encoding>UTF-8</encoding>   <!-- vorher: ISO-8859-1 -->
            </configuration>
        </plugin>
[/xml]
konfiguriert nur den Compiler, du willst das Encoding für die Resources setzen: Maven Resources plugin - Specifying a character encoding scheme 

Nutzt du schon das m2e Plugin für Eclipse?


----------



## fastjack (11. Apr 2012)

Das hier brauchst Du auch noch

[sql]CREATE DATABASE meineDB CHARACTER SET utf8 COLLATE utf8_bin;[/sql]


----------



## Raphalon (12. Apr 2012)

Die DB hatte ich bereits zuvor neu erstellt, weil ja bereits in dem von Dir angegebenen Link (http://www.java-forum.org/allgemeine-java-themen/125496-probleme-stringvergleichen-windows-linux.html) darauf hingewiesen wurde.

Habe aber jetzt die Lösung gefunden: im boot.log des JBoss wurde ein falsches file.encoding angezeigt. Habe daher nun (zuhause auf dem Mac) in meinem Profile 
	
	
	
	





```
export JAVA_OPTS=-Dfile.encoding=UTF-8
```
 hinzugefügt. Die Variable wird dann entsprechend vom Startskript gelesen und verwendet. Werde es morgen noch in der Arbeit auf dem Windows-Rechner entsprechend umsetzen, gehe aber davon aus, dass dies auch dort die Lösung sein wird.

Zu Testzwecken habe ich dann noch die anderen Optionen weggenommen, wie z.B. den Connect-String 
	
	
	
	





```
jdbc:mysql://localhost:3306/kds?useUnicode=true&characterEncoding=utf8
```
 wieder ersetzt durch 
	
	
	
	





```
jdbc:mysql://localhost:3306/kds
```
. Die Umlaute wurden auch dann korrekt gespeichert.


----------

