# CSV Encoding Problem



## y0dA (11. Mai 2010)

Hi!

Ich versuche gerade Datensätze in eine CSV Datei zu schreiben und dabei habe ich das Problem dass wenn ich die Datei im Anschluss mittels Excel öffne die Umlaut nicht korrekt angezeigt werden. Wenn ich die Datei mit einem normalen Editor öffne passen die Umlaute jedoch.

Ein bisschen Code:

```
BufferedWriter buffWriter = null;
			String pathToReportFile = null;
			try {
				pathToReportFile = BerichtCsvDao.getFileNameComplete(
						reportStoringPath, reportName);
				buffWriter = new BufferedWriter(new OutputStreamWriter(
						new FileOutputStream(pathToReportFile
								+ BerichtCsvDao.DATEI_ENDUNG_CSV),
						UTF8));
while (bedingung blah blah) {
//daten in buffWriter schreiben und am Ende der Zeile newLine und ein flush.
						buffWriter.newLine();
						buffWriter.flush();
```

Jemand eine Ahnung warum im Excel die Umlaute wie folgt aussehen:
TÃ¼r für Tür
StraÃŸe für Straße etc.


----------



## srea (11. Mai 2010)

```
buffWriter = new BufferedWriter(new OutputStreamWriter(
                        new FileOutputStream(pathToReportFile
                                + BerichtCsvDao.DATEI_ENDUNG_CSV),
                        "UTF8"))
```


Vielleicht liegts dran, das OutPutStreamWriter einen String als charset will.


----------



## SlaterB (11. Mai 2010)

Excel findet UTF8 nicht so toll, der Windows-Editor sicher auch nicht, 
was verstehst du unter 'normaler Editor'?

Cp1250 oder 8859_1 bzw. ISO8859_1 könnten für Windows besser sein
Supported Encodings

Google


----------



## y0dA (11. Mai 2010)

SlaterB hat gesagt.:


> Excel findet UTF8 nicht so toll, der Windows-Editor sicher auch nicht,
> was verstehst du unter 'normaler Editor'?
> 
> Cp1250 oder 8859_1 bzw. ISO8859_1 könnten für Windows besser sein
> ...



Normaler Editor ist für mich "PSPAD" oder einfach der Windows-Editor --> bei beiden passt die Anzeige.

Weiters kann ich nur "UTF8" benutzen weil manche Daten als UTF8 gespeichert wurden etc.

Prinzipiell isses mir nun eh egal da das .csv eigentlich dafür bestimmt sein soll dass die damit Daten einspielen und nicht grossartig das File mit Excel ansehen - hierfür könnten sie einen Excel Bericht erstellen lassen wo die Umlaute lustigerweise passen.
Naja vllt. isses dem Kunden nicht egal  aber zur Zeit kann ich es eh nicht ändern..



srea hat gesagt.:


> ```
> buffWriter = new BufferedWriter(new OutputStreamWriter(
> new FileOutputStream(pathToReportFile
> + BerichtCsvDao.DATEI_ENDUNG_CSV),
> ...


Vielleicht sollte ich "UTF-8" auch korrekt schreiben? Weiters hab ich im Code schon einen String (eine Konstante) hab hier einfach nur die Hochkomma vergessen als ich den Wert der Konstante kopiert habe.
**EDIT**
Naja selbst wenn ich UTF-8 richtig schreibe ändert sich nix


----------



## Wortraum (11. Mai 2010)

Da fragst Du besser in einem Forum für Microsoft‐Produkte oder Excel, mit Java hat das nichts zu tun. Falls Dir das Problem nicht klar ist, vielleicht noch ein Hinweis:
Excel interpretiert die mit UTF8 kodierte Datei mit CP1252, ISO-8859-1 oder ISO-8859-15. Wie man das einstellen, umstellen, reparieren kann – Microsoft fragen. 

> Vielleicht sollte ich "UTF-8" auch korrekt schreiben? 
Ist doch schon alles richtig.


----------



## y0dA (11. Mai 2010)

@Wortraum
Nein im Java-Code stand bisher "UTF8" - ändert aber nichts daran dass es im Excel falsch angezeigt wird.

Wie auch immer die .csv soll eh nicht mitm Excel geöffnet werden, ich war nur überrascht dass es im Excel anders aussieht als im Editor 0815.


----------



## Wortraum (11. Mai 2010)

y0dA hat gesagt.:


> @Wortraum
> Nein im Java-Code stand bisher "UTF8" - ändert aber nichts daran dass es im Excel falsch angezeigt wird.


Das habe ich gesehen, und es ist richtig. Ob man UTF8 oder UTF-8 angibt, ist egal, und wenn man etwas falsches angibt, macht Java auch nicht einfach irgend etwas, sondern wirft eine UnsupportedEncodingException.


----------

