BeanShell - Textdatei auslesen

Bei Problemen mit der Bedienung von TV-Browser, bitte hier posten.
Sheldon2012
Plugin-Developer
Beiträge: 1206
Registriert: 25 Dez 2012, 07:35

Re: BeanShell - Textdatei auslesen

Beitrag von Sheldon2012 »

Hi,

danke für den Hinweis. Das ist wohl die Lösung, so wie es aussieht.
Das 2. Unicode-Zeichen für "ß" kannte ich noch nicht. Danke !!! :D

Die Unicode-Zeichen verwende ich, weil ich mit de erkennung der reinen Zeichen äöüß Probleme hatte.

Folgerichtig waren dann auch die Unicode-Zeichen für äöü falsch. Das sollte dann wohl so laufen, richtig?

Code: Alles auswählen


         preparedString = preparedString.replaceAll("\u00e4", "ae"); // replace ä by ae
         preparedString = preparedString.replaceAll("\u00f6", "oe"); // replace ö by oe
         preparedString = preparedString.replaceAll("\u00fc", "ue"); // replace ü by ue
         


Nochmals vielen, vielen Dank!

Gruß

Sheldon
Sheldon2012
Plugin-Developer
Beiträge: 1206
Registriert: 25 Dez 2012, 07:35

Re: BeanShell - Textdatei auslesen

Beitrag von Sheldon2012 »

In Eclipse läuft das bestens. Wenn ich allerdings das .jar erstelle und es in das Plugin-Verzeichnis des TV-Browsers kopiere, werden die Sonderzeichen nicht erkannt. Stimmt da was mit den Einstellungen im Projekt bzw. Eclipe nicht?
uzi
Site Admin
Beiträge: 2294
Registriert: 02 Jul 2009, 14:32

Re: BeanShell - Textdatei auslesen

Beitrag von uzi »

da stellt sich halt die frage, was wirklich in dem string steckt, den du da bearbeitest. ich würde an deiner stelle mal mittels String.getBytes("UTF-8") den inhalt rausloggen und abgleichen, ob das dem entspricht, was du erwartest. gib auf jedenfall das charset explizit an, weil du sonst nie sicher sein kannst, was da im hintergrund passiert. da kommen dann so sachen, wie das platform default encoding ins spiel und alles wird noch viel verwirrender, als es eh schon ist. encoding suckt ;).
Sheldon2012
Plugin-Developer
Beiträge: 1206
Registriert: 25 Dez 2012, 07:35

Re: BeanShell - Textdatei auslesen

Beitrag von Sheldon2012 »

Aber das .jar sollte doch auf dem gleichen System mit der gleichen Datei und identischem Datenbestand im TV-Browser das gleiche Resultat bringen. Und das passiert nicht. Da ist doch was faul.
uzi
Site Admin
Beiträge: 2294
Registriert: 02 Jul 2009, 14:32

Re: BeanShell - Textdatei auslesen

Beitrag von uzi »

sicher. sollte. zu dem wort haben entwickler im allgemeinen ein ziemlich gespaltenes verhältnis :D. wenn die realität nicht deiner erwartung entspricht, hilft nur die systematische fehlersuche, und am 'systematisch' krankt es leider oft. abgesehen vom oben angeregten kann ich dir mehr dazu auch nicht sagen. arbeite dich in der real-umgebung stück für stück voran, bis du den fehler gefunden hast. und das bedeutet im normalfall loggen, loggen, loggen - oder einen debugger bemühen. wobei das in dem fall problematisch ist, weil du ja sagst, dass es in eclipse funktioniert.
ds10
Site Admin
Beiträge: 19125
Registriert: 23 Jun 2005, 12:36
Kontaktdaten:

Re: BeanShell - Textdatei auslesen

Beitrag von ds10 »

Das Problem kann auch einfach der FileReader sein, auch wenn du die Datei UTF-8 kodierst, wird unter Windows wahrscheinlich ISO-8859 bzw. Windows-1252 verwendet, so dass die Daten dann mit diesen Zeichensatz gelesen werden. In Eclipse hast du alles auf UTF-8 eingestellt deshalb funktioniert es dort. Der FileReader bietet dir ja die Methode getEncoding() an, da kannst du sehen, welcher Zeichensatz vom FileReader verwendet wird.
"First they ignore you, then they ridicule you, then they fight you, then you win." - Mahatma Gandhi
Unterstütze die Weiterentwicklung von TV-Browser
uzi
Site Admin
Beiträge: 2294
Registriert: 02 Jul 2009, 14:32

Re: BeanShell - Textdatei auslesen

Beitrag von uzi »

deshalb sag ich immer, dass das charset explizit angegeben werden muss. auch beim lesen von dateien. sonst greift das platform default encoding mit völlig unvorhersehbaren ergebnissen.
Sheldon2012
Plugin-Developer
Beiträge: 1206
Registriert: 25 Dez 2012, 07:35

Re: BeanShell - Textdatei auslesen

Beitrag von Sheldon2012 »

Also ich habe das jetzt mal so probiert, aber das hilft auch nicht.

Code: Alles auswählen


r = new InputStreamReader(new FileInputStream(mFile), "UTF8");
br = new BufferedReader(r);

Was mache ich denn da falsch?
uzi
Site Admin
Beiträge: 2294
Registriert: 02 Jul 2009, 14:32

Re: BeanShell - Textdatei auslesen

Beitrag von uzi »

sieht gut aus, aber nochmal: log dir raus, was wirklich in dem string steht. anders kommst du da nicht weiter.

[edit] r und br sind beschissene namen. es ist sinnvoller, ganze sätze als bezeichner für variablen zu benutzen, als einzelne buchstaben. die sematik sollte aus dem var-name ersichtlich sein. 'r' ist völlig ohne semantik.
ds10
Site Admin
Beiträge: 19125
Registriert: 23 Jun 2005, 12:36
Kontaktdaten:

Re: BeanShell - Textdatei auslesen

Beitrag von ds10 »

Es sollte eher UTF-8 sein.
"First they ignore you, then they ridicule you, then they fight you, then you win." - Mahatma Gandhi
Unterstütze die Weiterentwicklung von TV-Browser
Sheldon2012
Plugin-Developer
Beiträge: 1206
Registriert: 25 Dez 2012, 07:35

Re: BeanShell - Textdatei auslesen

Beitrag von Sheldon2012 »

Das war wohl der Fehler! Danke! Jetzt scheint es zu funktionieren. :)

Nach dem Einbau des Encodings erhalte ich Warnings bezüglich des Models.
Aber die kann ich wohl ignorieren, oder?

Das Plugin läuft jedenfalls gut.
Danke euch beiden!
ds10
Site Admin
Beiträge: 19125
Registriert: 23 Jun 2005, 12:36
Kontaktdaten:

Re: BeanShell - Textdatei auslesen

Beitrag von ds10 »

Wie genau lautet denn die Warnung?
"First they ignore you, then they ridicule you, then they fight you, then you win." - Mahatma Gandhi
Unterstütze die Weiterentwicklung von TV-Browser
Sheldon2012
Plugin-Developer
Beiträge: 1206
Registriert: 25 Dez 2012, 07:35

Re: BeanShell - Textdatei auslesen

Beitrag von Sheldon2012 »

Also ich exportiere mein Jar und erhalte die Meldung

JAR export finished with warnings. See details for additional information.

n den Details steht dann nur
Exported with compile warnings: tvbrowser/src/csvfilefiltercomponent/CSVFileFilterComp.java

Eplizite Warnings finde ich dort nicht. Muß ich noch an einer anderen Stelle nachschauen?

Unter Problems finde ich jede Menge Warnings:

Code: Alles auswählen

Description	Resource	Path	Location	Type
AbstractListModel is a raw type. References to generic type AbstractListModel<E> should be parameterized	ProgramListCellRenderer.java	/tvbrowser/src/util/ui	line 81	Java Problem
AbstractListModel is a raw type. References to generic type AbstractListModel<E> should be parameterized	ProgramListCellRenderer.java	/tvbrowser/src/util/ui	line 81	Java Problem
AbstractListModel is a raw type. References to generic type AbstractListModel<E> should be parameterized	SelectableItemList.java	/tvbrowser/src/util/ui/customizableitems	line 517	Java Problem
ArrayList is a raw type. References to generic type ArrayList<E> should be parameterized	ProgramTextCreator.java	/tvbrowser/src/util/program	line 794	Java Problem
ArrayList is a raw type. References to generic type ArrayList<E> should be parameterized	ProgramTextCreator.java	/tvbrowser/src/util/program	line 796	Java Problem
Build path specifies execution environment JavaSE-1.6. There are no JREs installed in the workspace that are strictly compatible with this environment. 	tvbrowser		Build path	JRE System Library Problem
Class is a raw type. References to generic type Class<T> should be parameterized	BrowserLauncher.java	/tvbrowser/src/util/browserlauncher	line 77	Java Problem
Class is a raw type. References to generic type Class<T> should be parameterized	BrowserLauncher.java	/tvbrowser/src/util/browserlauncher	line 80	Java Problem
Class is a raw type. References to generic type Class<T> should be parameterized	BrowserLauncher.java	/tvbrowser/src/util/browserlauncher	line 83	Java Problem
Class is a raw type. References to generic type Class<T> should be parameterized	BrowserLauncher.java	/tvbrowser/src/util/browserlauncher	line 308	Java Problem
Class is a raw type. References to generic type Class<T> should be parameterized	BrowserLauncher.java	/tvbrowser/src/util/browserlauncher	line 360	Java Problem
Class is a raw type. References to generic type Class<T> should be parameterized	BrowserLauncher.java	/tvbrowser/src/util/browserlauncher	line 361	Java Problem
Class is a raw type. References to generic type Class<T> should be parameterized	BrowserLauncher.java	/tvbrowser/src/util/browserlauncher	line 362	Java Problem
Class is a raw type. References to generic type Class<T> should be parameterized	BrowserLauncher.java	/tvbrowser/src/util/browserlauncher	line 363	Java Problem

...

ds10
Site Admin
Beiträge: 19125
Registriert: 23 Jun 2005, 12:36
Kontaktdaten:

Re: BeanShell - Textdatei auslesen

Beitrag von ds10 »

So lange das Plugin funktioniert stören solche Warnungen nicht weiter, insbesondere wenn du in Eclipse keine Warnungen für die Klassen des Plugins sehen kannst. Manche Warnungen beziehen sich auch nur auf überflüssige Importe oder Variablen. (Wahrscheinlich hier der Fall, weil du FileReader noch importierst.) Gegen Warnungen, die nicht in den Klassen des Plugins sind, kannst du sowieso nichts machen.
"First they ignore you, then they ridicule you, then they fight you, then you win." - Mahatma Gandhi
Unterstütze die Weiterentwicklung von TV-Browser
uzi
Site Admin
Beiträge: 2294
Registriert: 02 Jul 2009, 14:32

Re: BeanShell - Textdatei auslesen

Beitrag von uzi »

Manche Warnungen beziehen sich auch nur auf überflüssige Importe oder Variablen.
strg + shift + o (organize imports). man kann eclipse auch so einstellen, dass das beim save automatisch passiert.
Antworten