You are not logged in.

  • Login

1

Friday, November 10th 2006, 8:18pm

UTF-8 an TidyHTML senden

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:

Java Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
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?

Similar threads

Social bookmarks