"Christmas - the time to fix the computers of your loved ones" « Lord Wyrm

File in Java auslesen --> Code Problem

fresserettich 16.07.2005 - 21:21 1365 11
Posts

fresserettich

Here to stay
Registered: Jul 2002
Location: hier
Posts: 5321
Hi!

Lese mit Java ein Textfile aus und habe dabei folgendes Problem:
Ich lese die Datei aus nur werden bestimmte Zeichen falsch ausgelesen z.B. ä wird zu " (nur halt nach unten gestellt) so habe mir also das file in einem hexeditor angesehen und bin draufgekommen dass dieser hexwert im im uni code genau dieses zeichen darstellt als was ich es dann mit system.out.println ausgegeben bekomme
bin mir ziemlich sicher dass das file im ansi-code abgespeichert worden ist und java eben mit uni-code arbeitet
wollte daher folgende lösung anstreben ich wandle den code in ein char array um und vergleiche mit dem entsprechenden hexwert wenn gefunden dann zeichen ersetzen ich frage den hexwert vom char mit der funktion getnumericvalue nur die liefert mir immer minus eins zurück bei meinen problemzeichen


wie könnte ich das problem lösen oder wo ist mein fehler?

edit: wichtig file scheint doch im ansi-code abgespeichert worden zu sein
Bearbeitet von fresserettich am 31.07.2005, 16:05

ica

hmm
Avatar
Registered: Jul 2002
Location: Graz
Posts: 9805

mat

Administrator
Legends never die
Avatar
Registered: Aug 2003
Location: nö
Posts: 25388
welche streamklasse benutzt du dafür?

fresserettich

Here to stay
Registered: Jul 2002
Location: hier
Posts: 5321
hat mir leider auch nicht weitergeholfen bekomm eine execption wenn ich umlaute im string habe
wenn ich z.B. versuche über den dezimalen wert zu vergleichen geht der vergleich zwar bei den normalen buchstaben aber nicht bei umlauten :(
edit:
Einlese-Code:
Code: PHP
public ArrayList getFile(String pfad,boolean addLine)
    {
        ArrayList list = new ArrayList(); 
        //FileReader f;
        BufferedReader f;
        char ch ;
        String leerStr="";
        int k;
        String str ="";
        String line="";
        
        //aus File auslesen
         try
         {
            f = new BufferedReader(new FileReader(pfad));
            //File aus lesen und jede Zeile in eine ArrayList von Strings speichern
            while ((line = f.readLine())!= null)
            {
                list.add(line);
                if(line.length() == 1)
                    leerStr = line;
            }
             f.close();
             
             //LeerZeile an die letzte Stelle anfügen
             if(addLine == true)
                list.add(leerStr);
         }
         catch (IOException e)
         {
             System.out.println("Fehler beim Lesen der Datei");
         }  

        return list;
    }

 
Bearbeitet von fresserettich am 18.07.2005, 08:16

ica

hmm
Avatar
Registered: Jul 2002
Location: Graz
Posts: 9805
also ich weiss ja nicht was du sonst nocht machst, aber der code

Code: PHP
        ArrayList list = new ArrayList();
        BufferedReader f;
        String line="";
        
         try
         {
            f = new BufferedReader(new FileReader("c:\\file.txt"));
            while ((line = f.readLine())!= null)
                list.add(line);

             f.close();
             System.out.println(list.get(0));
         }
         catch (IOException e)
         {
             System.out.println("Fehler beim Lesen der Datei");
         } 

gibt mir bei einer textdatei mit äü auch äü aus

prayerslayer

Oar. Mh.
Avatar
Registered: Sep 2004
Location: vorm Sucher
Posts: 4073
generell is des ja egal das java mit unicode arbeitet oder? also ich mein des hat auf textdateien (o.ä.) keine auswirkung...

watchout

Legend
undead
Avatar
Registered: Nov 2000
Location: Off the grid.
Posts: 6845
Zitat von prayerslayer
generell is des ja egal das java mit unicode arbeitet oder? also ich mein des hat auf textdateien (o.ä.) keine auswirkung...
ähm, wenn nicht auf textdateien - auf was dann sonst? :D

prayerslayer

Oar. Mh.
Avatar
Registered: Sep 2004
Location: vorm Sucher
Posts: 4073
auf nichts ;)

gue

Addicted
Avatar
Registered: Feb 2003
Location: Linz
Posts: 400
@fresserettich:
Schau dir mal die Klassen an:
Charset, CharsetDecoder und InputStreamReader.
HTH

prayerslayer

Oar. Mh.
Avatar
Registered: Sep 2004
Location: vorm Sucher
Posts: 4073
//gepostet bevor ichs verstanden hab... sorry :)
Bearbeitet von prayerslayer am 26.07.2005, 18:55

fresserettich

Here to stay
Registered: Jul 2002
Location: hier
Posts: 5321
also problem ist gelöst aber nochmal das file ist ja nicht von mir erstellt worden sondern existiert bereits und ich lese das file aus nur die zeichen die in diesem file ausgelesen werden sind im uni-code kein ä,ö oder ü sondern ein anderes

die charset etc. hab ich mir angeschaut und habe leider beim umwandeln eine exception bekommen
meine lösung schaut nun so aus ich habe mir die entsprechenden unic-codes für die zeichen gesucht in der die umlaute konvertiert
dann wandle ich jede zeile in char-array um und durchsuche das array wenn dann ein char gleich dem entsprechenden uni-code ist wird es einfach durch ein ä oder was halt dann sein soll ersetzt

hoffe es kennt sich jetzt jeder aus sonst einfach fragen :)

that

Moderator
Hoffnungsloser Optimist
Avatar
Registered: Mar 2000
Location: MeidLing
Posts: 11327
Zitat von fresserettich
hoffe es kennt sich jetzt jeder aus sonst einfach fragen :)

Hier, ich schenk dir was:

,,,,,,,,,,,,,,,, .................


Zur entsprechenden Verteilung in deinem Post. Ansonsten ist diese Ansammlung von Wörtern eine Zumutung.
Kontakt | Unser Forum | Über overclockers.at | Impressum | Datenschutz