Hallo,
ich habe eine kleine Anwendung welche gewisse Operationen durchführen soll. Hierbei werden auch Inhalte aus Textdateien gelesen welche von externen Systemen kommen. Innerhalb dieser können Umlaute enthalten sein. Diese Umlaute sollen nun umgesetzt werden.
Das ist so weit kein Problem, unter Windows läuft das ganze ohne Probleme. Lege ich jetzt genau die gleiche Anwendung auf den Linux-Server und lasse diese durchlaufen so kommt ein Fehler - die Umlaute werden nicht erkannt.
Ich habe nun den Bereich extrahiert und einen einfachen Testcase dafür geschrieben um das Problem zu fixen - allerdings ohne wirklichen Erfolg. Ich bekomme es einfach nicht gebacken.
Hier erstmal etwas Code:
public static String convertStringWithoutUmlaute(String source) {
return source.replaceAll("ä", "ae").replaceAll("ö", "oe").replaceAll("ü", "ue").replaceAll("Ä", "Ae").replaceAll("Ö", "Oe").replaceAll("Ü", "Ue").replaceAll("ß", "ss");
}
Aufruf über
public void testStringUtil() {
assertEquals("ae", StringUtil.convertStringWithoutUmlaute("ä"));
assertEquals("Ae", StringUtil.convertStringWithoutUmlaute("Ä"));
assertEquals("oe", StringUtil.convertStringWithoutUmlaute("ö"));
assertEquals("Oe", StringUtil.convertStringWithoutUmlaute("Ö"));
assertEquals("ue", StringUtil.convertStringWithoutUmlaute("ü"));
assertEquals("Ue", StringUtil.convertStringWithoutUmlaute("Ü"));
assertEquals("Boerdesprint", StringUtil.convertStringWithoutUmlaute("Bördesprint"));
assertEquals("woeltge", StringUtil.convertStringWithoutUmlaute("wöltge"));
assertEquals("Gneisenaustrasse 3", StringUtil.convertStringWithoutUmlaute("Gneisenaustraße 3"));
}
Führe ich den Testcase unter Windows aus so läuft das ganze ohne Probleme durch. Auf Linux schlägt die Anwendung fehl.
Ich vermute hier mal ein Encoding-Problem - nur wie kann ich dieses Problem lösen ?
Danke für die Hilfe
Gruß T