Zum Inhalt springen

Java Encoding Problem - Windows -> Linux


Empfohlene Beiträge

Geschrieben

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

Geschrieben

Servus,

wo kommt der String "source" her? Aus einer Datei, die Du selbst einliest? Liest Du sie im korrekten Encoding ein? Weißt Du, welches Encoding es ist (ich vermute mal ISO-8859-1 und Linux vermutet UTF-8)?

Du kannst beim Einlesen der Datei z.B. mal so was machen:


BufferedReader reader = new BufferedReader(
new InputStreamReader(
new FileInputStream(filename), "ISO-8859-1"));
[/PHP]

Damit legst Du fest, in welchem Encoding der Eingabestrom gelesen wird. Wenn Du diese Angabe nicht machst, wird im Standardencoding gelesen.

Peter

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...