# Datei im DOS/ASCII-Format einlesen.



## DiscoDon (9. Jan 2009)

Hallo ich will die PLZ Datafactory Rohdaten von der Deutschen Post einlesen. Bisher sieht das so aus:

```
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:


```
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


----------



## Guest (9. Jan 2009)

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


----------



## Leroy42 (9. Jan 2009)

DiscoDon hat gesagt.:
			
		

> Laut Post ist der Zeichensatz der Datei DOS/ASCII.



Was soll denn jetzt DOS/ASCII sein? Es gibt nur ein ASCII-Zeichensatz und der
hat nichts mit dem _*D*isk *O*perating *S*ystem_ zu tun.

 :noe:


----------



## DiscoDon (9. Jan 2009)

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


----------



## Leroy42 (9. Jan 2009)

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.


----------



## mahe (9. Jan 2009)

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 (9. Jan 2009)

mahe hat gesagt.:
			
		

> Eben der Zeichensatz den DOS verwendete.



Wenn du mit DOS jetzt MS-DOS meinst, hast du vermutlich Recht!


----------



## Murray (9. Jan 2009)

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 

```
Charset.forName("Cp850")
```
 bzw 
	
	
	
	





```
Charset.forName("Cp437")
```
versuchen.


----------



## mahe (9. Jan 2009)

Leroy42 hat gesagt.:
			
		

> mahe hat gesagt.:
> 
> 
> 
> ...



Jap, meinte ich :wink:


----------



## DiscoDon (9. Jan 2009)

Ich danke euch vielmals. Mit dem Cp850 funktioniert es einwandfrei.


----------

