Datei im DOS/ASCII-Format einlesen.

Status
Nicht offen für weitere Antworten.

DiscoDon

Mitglied
Hallo ich will die PLZ Datafactory Rohdaten von der Deutschen Post einlesen. Bisher sieht das so aus:
Code:
   bf = new BufferedReader(new FileReader(raw_data));

            while (null != (line = bf.readLine())) {
                // TODO
            }

Das Problem ist, dass alle Umlaute falsch dargestellt werden. Laut Post ist der Zeichensatz der Datei DOS/ASCII. Wie kann ich dem Reader den richtigen Zeichensatz mit auf den Weg geben. Ich vermute, dass das irgendwie in diese Richtung gehen muss:

Code:
bf = new BufferedReader(new InputStreamReader(new FileInputStream(raw_data), Charset.forName("Cp1252")));

Das klappt nur bisher auch nicht. Könnt ihr mir da mal auf die Sprünge helfen?

MfG

DiscoDon
 
das hat jetzt vielleicht nix mit dem bufferdReader zu tun, aber das könnte dir helfen:

wenn du den namen als byte[] hast, kannst du mit dem string konstruktor folgendes machen:

new String(bArray, "UTF-16LE");

mfg
 
So funktioniert das ja theoretisch bei dem InputStreamReader auch. Ich weiß nur nicht welchen Charset ich da übergeben soll. In der API steht nämlich nichts von einem DOS/ASCII Charset. Ich bin also auf der Suche nach dem Charset in Java für DOS/ASCII.

Ich habe bei der Post nachgefragt und in der Antwortemail haben die gesagt es wäre der DOS/ASCII Zeichensatz. Was das sein soll verstehe ich auch nicht. Es hat auch jedes andere Programm wie z.B. notepad++ Probleme mit der korrekten Anzeige. Schicke denen jetzt nochmal ne Mail.


Übersicht über Charsets
http://java.sun.com/j2se/1.5.0/docs/guide/intl/encoding.doc.html
 
DiscoDon hat gesagt.:
In der API steht nämlich nichts von einem DOS/ASCII Charset. Ich bin also auf der Suche nach dem Charset in Java für DOS/ASCII.

Kein Wunder! So einen Zeichensatz gibt es ja auch nicht.

DiscoDon hat gesagt.:
haben die gesagt es wäre der DOS/ASCII Zeichensatz

Blödsinn. Es gibt nur einen ASCII-Zeichensatz und der ist definiert für die Werte von 0 bis 127.
 
Mit DOS/ASCII wird höchstwahrscheinlich Codepage 850 oder ähnliches gemeint sein. Eben der Zeichensatz den DOS verwendete.

Versuch in Java Cp850 oder Cp858.
 
Leroy42 hat gesagt.:
Kein Wunder! So einen Zeichensatz gibt es ja auch nicht.
Hier geht es aber um ein Encoding - und davon gibt es natürlich diverse.
DOS verwendet m.W entweder Codepage 850 oder 437, insofern würde ich es mal mit
Code:
Charset.forName("Cp850")
bzw
Code:
Charset.forName("Cp437")
versuchen.
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben