Ich möchte HTML in UTF-8 aus einem Bean (Java 1.3.1) heraus an TidyHTML senden um diese als ASCII mit Entities wiederzubekommen. Leider funktioniert das nicht. Kleine Umlaute werden kodiert, große Umlaute und ß werden in Entities mit Nummern größer 65000 zurückgegeben.
Mein Code:
Alles anzeigen
Wo ist da mein Fehler? Weiß jemand Rat?
Mein Code:
Quellcode
- private String tidy(String input)
- throws Exception {
- // Optionen zusammenbauen
- this.options = "";
- // Kommando ausführen
- Runtime rt = Runtime.getRuntime();
- Process pr = rt.exec("/usr/bin/tidy" + this.options);
- // Daten an das Kommando schreiben
- OutputStream os = pr.getOutputStream();
- OutputStreamWriter osw = new OutputStreamWriter(os, "UTF8");
- BufferedWriter bw_output = new BufferedWriter(osw);
- bw_output.write(input);
- bw_output.flush();
- bw_output.close();
- this.errMsg = "";
- String errline = "";
- // Fehlermeldung von Tidy auslesen
- InputStream is_error = pr.getErrorStream();
- InputStreamReader isr_error = new InputStreamReader(is_error);
- BufferedReader br_error = new BufferedReader(isr_error);
- while ((errline = br_error.readLine()) != null)
- this.errMsg += errline;
- br_error.close();
- // Fehler, wenn gewünscht, als Exception werfen.
- if (this.errMsg.length()>0 && this.throwError)
- throw(new Exception(this.errMsg));
- String resline = "";
- String result = "";
- // Ergebnis vom Kommando auslesen
- InputStream is = pr.getInputStream();
- InputStreamReader isr = new InputStreamReader(is, ASCII);
- BufferedReader br_input = new BufferedReader(isr);
- while ((resline = br_input.readLine()) != null)
- result += resline;
- br_input.close();
- return result;
- }
Wo ist da mein Fehler? Weiß jemand Rat?