Properties und Encoding

Manchmal sollte man die Warnings lesen, die diverse Tools auswerfen.

Es ist ein guter Hinweis von Maven2, dass man ggf. folgendes einfügen sollte:


<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>

Ansonsten kann es sein, dass die Quellcode-Dateien stillschweigend umgesetzt werden.
In diesem Zusammenhang sind wir auf einen Mechanismus gestoßen, der komischerweise bis jetzt immer so weit funktioniert hat.

Die Properties-Dateien besitzen gesonderte Einstellungen im Eclipse und sie sind voreingestellt auf ISO-8859-1.
Der Grund ist das Default-Einlese-Verhalten von Ressource-Bundles.
Alle Zeichen, die nicht ISO-8859-1 entsprechen, müssen als Unicode-Escape-Sequencen geschrieben werden.
Wenn man nun UTF-8 kodierte Properties-Dateien benutzt, dann können die Zeichen beim Default-Einlesen zerstört werden.

Siehe hierzu z. B.: globalizer.wordpress.com

Aber unter Java 1.6 gibt es eine neue Möglichkeit, dieses Default-Einlesen mit einem eigenen Reader zu umgehen.
Nur leider wird beim Verwenden von verschiedensten Frameworks diese neue Möglichkeit sicher nicht konsistent umgesetzt.


Update: With Java 6 you can use PropertyResourceBundle constructed with a Reader, which can use UTF-8 directly.

Es kann passieren, dass beim Ressouce-Kopieren durch Maven die Dateien umkodiert werden und man lustige Ausgaben erhält, je nach Zielplattform und deren Encoding.