# Wie konvertiere ich Umlaute (ä -> ae) ?



## theNick (25. Mrz 2010)

Hallo,

ich habe schon ein einige Zeit lang im Internet (sowie hier im Forum) nach folgender Problematik gesucht, bisher jedoch nicht gefunden:

Ich bekomme einen String, welchen ich von Umlauten bereinigen will. Um diese jedoch nicht zu verlieren möchte ich sie gerne Konvertieren.
Also:
aus ä soll ae werden,
aus ü soll ue werden,
aus ß soll ss werden,
aus é soll e werden,
aus â soll a werden,
...usw.
Bsp.: aus Mörtel soll Moertel werden

Da ein einfaches String-replace verdammt viel Tipparbeit wäre, habe ich nach einer vorhandenen Java-Methode gesucht, allerdings noch keine gefunden.


Viele Grüße,
theNick


----------



## madboy (25. Mrz 2010)

Sooo viel Tipparbeit ist das doch nicht. Eine Map mit den Ersetzungen und eine Schleife, die ersetzt. Außer, ich verstehe was falsch ;-)


----------



## agentone (25. Mrz 2010)

Warum willst du überhaupt die Umlaute konvertieren?
Java ist internationalisiert und unterstützt Umlaute sogar in Variablennamen. 
Wenn du Out- oder InputStreams hast, kannst du vorher die Zeichencodierung wählen. Damit kannst du Umlaute beibehalten und es geht nichts verloren!

Und wenn du es trotzdem machen willst: replace und eine Liste der Umlaute und deren Umwandlung lässt sich wohl nicht vermeiden. Ich kenne zumindest keine solche Funktion.


----------



## theNick (25. Mrz 2010)

Erstmal danke für eure schnellen Antworten
@madboy
Es ist wirdklich viel Tipparbeit + alle Möglichen raussuchen 
Ein Beispiel für "o": œōøöõôóòöǒθo‘סּ
und das waren nur die Ersten, die ich bei Wikipedia gefunden hab 

@agentone 
einen Steam habe ich nicht, nur einen String der meiner Methode übergeben wird.
Zu deiner Frage wofür ich das brauche: Ein Bot, auf den ich keinen Einfluss habe, wird nachher den String auslesen und dem Benutzer anzeigen - Und im Moment macht er aus meinem "Mörtel" ein "Mrtel"


----------



## madboy (25. Mrz 2010)

Ach so, du willst also alle Zeichen, die in Unicode vorkommen und aussehen wie ein o zu einem o machen und so weiter? Das ist erstens wirklich viel Tipparbeit, zweitens stimmt was mit dem Design bzw. dem Zeichenencoding nicht und drittens verstehe ich nicht, warum du ein Zeichen, das aussieht wie ein o, aber keines ist zu einem o machen willst.

Annahme 1: du hast einen String mit wilden Sonderzeichen.
Du willst den String mit Sonderzeichen anzeigen, also musst du dich um das Encoding beim Anzeigen kümmern (wobei das normalerweise intern korrekt funktioniert, es sei denn die Anzeigeschriftart kennt diverse Zeichen nicht)

Annahme 2: du hast einen String, der wilden Sonderzeichen enthalten sollte, aber die fehlen schon.
Dann stimmt was beim Einlesen des Strings nicht.

Alles in allem würde ein Beispiel helfen, was du genau hast und was du genau willst.


----------



## theNick (25. Mrz 2010)

hmm, ich versuche es mal mit einem Beispiel:

Ein User (von belibiger Nationalität d.h. mit den diversesten Sonderzeichen) gibt einen String in ein Eingabefeld ein.
 -> z.B. den String "Mörtel"
Diese Eingabe wird von einem Bot, welcher diese Sonderzeichen nicht erkennen kann, indexiert.
 -> in dem Fall von "Mörtel" würde er "Mrtel" oder "M?rtel" lesen.
Um nun mehrere Eingaben durchsuchen zu können, muss ich den String daher vorbearbeiten
 -> aus "Mörtel" ein Moertel machen

Umschreibungen (z.B. von "ö" als oe) für Sonderzeichen gibt es ja in jeder Sprache (soweit ich weiß). Sollte es keine definierte Umschreibung dafür geben, kann einfach das "Basiszeichen" (in diesem Fall "o") verwendet werden.

Also im Prinzip will ich es ähnlich machen wie der java-URLEncoder, nur dass ich kein html code sondern halt die Umschreibung/den Basisbuchstaben haben will


----------



## eRaaaa (26. Mrz 2010)

Haha, mit einer Mischung aus
AW: Transforming german umlaute like ö,ä,ü ,ß into oe, ae, ue, ss
und
Use Normalizer to Remove Accents : NormalizerI18NJava Tutorial
sieht das Ergebnis doch schon gar nicht so schlecht aus :lol::lol: (vom Aussehen des Codes aus dem erstne Link mal abgesehen ^^)


```
hällo wörld. âllés gütï ? œ ō ø ö õ ô ó ò ö ǒ θ o ‘ס ß
```

:arrow:


```
haello woerld. alles gueti ? oe o o oe o o o o oe o  o  ss
```

/edit: Ansonsten könnte man sich auch überlegen einfach alle Zeichen außer A-Za-z oder so einfach im Textfeld nicht zu akzeptieren


----------



## theNick (26. Mrz 2010)

Die Links sind mal geil 
Ich denke ich werde mir daraus etwas schönes zusammenschreiben.
Vielen Dank DDD


----------

