Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Empfohlene Antworten

Veröffentlicht

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

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

Hi

das ist schon der Fall, sprich hier lese ich schon den richtigen Stream ein

Dennoch übersetzt der mir meine Umlaute nicht entsprechend

Gruß T

Und wie liest Du die Daten genau ein (Codebeispiel)?

Erstelle ein Konto oder melde dich an, um einen Kommentar zu schreiben.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.