Robert: URL-encoding, UTF-8, ISO-8859-1 ...

Hallöle,

ich hab einige Strings (ursprünglich Referrer aus diversen Logfiles) - ja, ich weiß, da kann jeder mögliche Unsinn drinstehen, trotzdem will ich da was auswerten. Speziell geht es um die Suchstrings, falls der Referrer eine Search Engine ist.

Ok, das Extrahieren des Suchstrings gelingt mir auch mit ausreichend hoher Treffsicherheit.

Probleme machen jetzt nur noch Sonderzeichen.
Ok, aus + Zeichen mach ich Leerzeichen. Kein Thema.

Aber da sind ja auch noch die Umlaute, akzentierte Zeichen usw.

Beispielsweise hat jemand nach "Gepäck" gesucht, dann erscheint "gep%C3%A4ck", aber auch "Gep%E4ck", in meiner Auflistung auf.
Klar, mit etwas Übung kann man trotzdem noch lesen, was gesucht wurde - aber ich fänd es halt schöner, wenn mein Java-Programm direkt "Gepäck" anzeigen würde, liest sich halt leichter - außerdem erleichtert es die statistische Auswertung, wenn ein Wort immer in derselben Schreibweise gespeichert wird.

Ich bräuchte also eine Klasse/Methode, die

  • die URL-encodierten Zeichen decodiert
  • dabei ggf. auch UTF-8/ISO-8859-1 usw erkennt

Gibt es das?
Irgendwie find ich in den API-Docs nichts ...

Zur Not kann ich die wichtigsten Zeichen sowohl in UTF-8 als auch in ISO url-codieren und die Ergebnisse dann für ne Ersetzungs-Tabelle nutzen nach dem Muster:
%C3%A4 -> ä
%C3%9C -> Ü
%C3%9F -> ß
%E4 -> ä
usw.

Aber wenn es da was schlaues vorgefertigtes gäbe ...

Kann mir mal jemand auf die Sprünge helfen?
Wäre sehr dankbar!

cu,
Robert

  1. Hallo,

    Gibt es das?
    Irgendwie find ich in den API-Docs nichts ...

    In Java direkt gibt's sowas meines Wissens nach nicht.

    Aber wenn es da was schlaues vorgefertigtes gäbe ...

    Das wiederum sollte es geben. :-)

    Schau dir mal die Common Codecs an.

    Ingesamt solltest du dir mal die ganzen Jakarta Commons anschauen. Das
    Zeugs dort ist meistens sehr hilfreich.

    Gruß
    Slyh

    1. Hi Slyh,

      In Java direkt gibt's sowas meines Wissens nach nicht.

      Ich habe von der Materie zwar keine Ahnung, aber der Begriff "Encodierung" brachte mich auf java.net.URLEndoder und java.net.URLDecoder.
      Sind diese Typen für die Anfordernungen nicht zu gebrauchen?

      Viele Grüße,
      Martin

      1. Hallöle,

        In Java direkt gibt's sowas meines Wissens nach nicht.
        Ich habe von der Materie zwar keine Ahnung, aber der Begriff "Encodierung" brachte mich auf java.net.URLEndoder und java.net.URLDecoder.
        Sind diese Typen für die Anfordernungen nicht zu gebrauchen?

        Danke Euch beiden - da läßt sich was draus basteln aus den genannten Klassen ...

        cu,
        Robert