Charset-Problem nach Plugin-Export

Joergel

Mitglied
Moin zusammen,

folgendes eigenartiges Problem: Ich habe mir ein einfaches, kleines Eclipse-Plugin geschrieben, das nach Rechtsklick auf einen Dateinamen im Package-Explorer die Datei ausliest, alle Umlaute in numerische HTML-Entities konvertiert und den konvertierten Text wieder in die Datei schreibt. Die entscheidenden Quelltextteile sehen folgendermaßen aus:

Java:
private void write(IFile file) {
		try {
            StringBuilder stringBuilder = new StringBuilder();
            InputStream is = file.getContents();
            InputStreamReader isr = new InputStreamReader(is);
			BufferedReader br = new BufferedReader(isr);
			String line;
			while ((line = br.readLine()) != null) {
				stringBuilder.append(line);
			}
            String str = replaceChar(stringBuilder.toString());
			file.setContents(new ByteArrayInputStream(str.getBytes()),true,true,null);
        } catch (CoreException e) {
            e.printStackTrace();
        } catch (IOException e) {
			e.printStackTrace();
		}
	}

	private String replaceChar(String txt) {
		char[] cArr = { 196, 228, 214, 246, 223, 220, 252 };
		String[] sArr = new String[cArr.length];
		for (int i = 0; i < cArr.length; i++) {
			sArr[i] = new Character(cArr[i]).toString();
		}
		if (txt.length() > 0) {
			for (int i = 0; i < cArr.length; i++) {
				txt = txt.replaceAll(sArr[i],
						"&#" + new Integer(cArr[i]).toString() + ";");
			}
		}
		return txt;
	}
Lasse ich das Plugin per 'Run as Eclipse Application' laufen funktioniert alles einwandfrei und die konvertierten Entities werden korrekt in die Datei geschrieben.
Exportiere ich das Plugin jedoch als 'deployable plugins and fragments' werden lediglich Fragezeichen in die Datei geschrieben.
Das eigentlich zuverlässige Plugin der FH Worms zum Prüfen des Charsets zeigt vorher und nachher jeweils wie gewünscht korrektes UTF-8 an. Selbstverständlich laufen mein Rechner (MacOSX) und Eclipse vollständig unter UTF-8.

Hat jemand 'ne Idee wo ich noch suchen kann?

Danke für's Hirnschmalzopfer!

Jörg
 
Für alle mit ähnlichen Problemen, wenn sie - wie ich - Anfänger in der Plugin-Programmierung sind:
Beim Export legt Eclipse Instanzen des exportierten Plugin, versehen mit einer ID an, sodass nach mehreren Exporten auch mehrere Instanzen des Plugins importiert wurden. Bei der Testerei häufen sich so leicht etliche gleiche Plugins an und somit auch ältere, fehlerhafte.
Bei mir hat sich nach kräftigem Aufräumen das Problem in Luft aufgelöst. Es war also vermutlich eine alte, noch fehlerhaft Instanz des Plugins verantwortlich.
Eine Änderung habe ich allerdings doch noch gegenüber dem o.a. Code vorgenommen. Der InputStreamReader wurde hinsichtlich des Charsets spezifiziert:
[Java]
InputStreamReader isr = new InputStreamReader(is, "UTF-8");
[/code]
 

Zurück
Oben