# Encoder für Java String in html format



## jbg (26. Nov 2007)

Hallo,

folgendes problem:

Ich habe einen Java String, welchen ich per jsp auf einer html seite ausgeben will. Der Inhalt des Strings wurde über ein eingabeformular von einem nutzer gepflegt. Aufgrund dessen kann es nun ja möglich sein, dass der user zb html tags eingebaut hat, welche sich wiederrum auf die ausgabe auswirken. Genau dies will ich vermeiden, sprich ich will den String vor der ausgabe so bearbeiten, dass mögliche "Gefahrenquellen" beseitigt werden...
Gibt es für dieses anliegen schon vorgefertigte utils oder ähnliches?

löst man diese aufgabe am besten java seitig oder per javascript?

danke!

Gruß


----------



## The_S (26. Nov 2007)

Vermutlich reicht es schon, wenn du < durch & und > durch & ersetzt. Was das mit JavaScript zu tun haben soll, weiß ich allerdings nicht  .

[edit] Hm, ich sehe gerade, dass das Forum meine Zeichen ersetzt. < soll natürlich nicht durch & und > auch nicht durch & ersetzt werden, sondern durch das zugehörige HTML-Zeichen.


----------



## jbg (26. Nov 2007)

danke für deine antwort, habe jetzt doch noch was passendes gefunden:

org.apache.commons.lang.StringEscapeUtils


----------



## MiDniGG (9. Jan 2008)

Hi,

ich hab auch so ein ähnliches Problem... Ich würde es gerne so lösen:

URLEncoder.encode(bla, "UTF-8");

das UTF-8 ist jetzt nur mal als Beispiel da... (Habe da auch schon alle mir bekannten Versionen durchversucht z.B. US_ASCII). Auf jeden Fall kommt dann statt " folgendes: %22

Da ich das aber in HTML brauche ist das schlecht.

Hat irgendjemand eine Idee???
Gibts da noch irgendeinen extra Encoder oder sowas... Also die API hilft mir da leider nicht weiter. Außer ich suche komplett falsch... ^^


*EDIT:*

OK. Habs etz so gelöst:


```
HTMLEntityEncode html = new HTMLEntityEncode();
String s = html.HTMLEntityEncoder(TEXT);
```

und 


```
public class HTMLEntityEncode
{
    public static String HTMLEntityEncoder( String s )
    {
       StringBuffer buf = new StringBuffer();
       int len = (s == null ? -1 : s.length());

       for ( int i = 0; i < len; i++ )
       {
           char c = s.charAt( i );
           if ( c>='a' && c<='z' || c>='A' && c<='Z' || c>='0' && c<='9' )
           {
               buf.append( c );
           }
           else
           {
               buf.append( "&#" + (int)c + ";" );
           }
       }
       return buf.toString();
   }
}
```


----------



## java_entwickler (10. Jan 2008)

Javascript nutzt man an dieser Stelle nicht,  weil man von der Clientseite den Inhalt ändern kann.


----------



## maki (10. Jan 2008)

midnigg,

hast du dir ml die Klasse org.apache.commons.lang.StringEscapeUtils angesehen? 

Da wäre eigentlich schon alles drinnen.


----------



## MiDniGG (10. Jan 2008)

hm jaah.. Hab ich schon... Aba irgendwie bin ich mit der ned klar gekommen   
Und so geht es ja auch  Ist ja bei mir nur zur Übung. Aber bei Gelegenheit werde ich mich mit der Klasse vllt nochmal beschäftigen :-D


----------

