UTF8/Win1252 auf Server und lokal konvertieren

xrax

Erfahrenes Mitglied
Hallo zusammen,

ich steh mal wieder auf dem Schlauch......

Ich möchte eine UTF8-Formatierte CSV von einem FTP hole, in Win1252 - formatieren und auf einen anderen Server übertragen.

Klappt auch wenn ichs auf meinem WinRechner mache.

Ich hole das File. Lege es auf meinen Win-Rechner, lasse folgendes laufen und erhalte in meinem WinFilesystem die passende Datei. Diese sende ich dann an den Zielserver.

Code:
BufferedReader in = new BufferedReader( new InputStreamReader(new FileInputStream(filename), "UTF8"));

String str;
       while ((str = in.readLine()) != null) {
         writeFile(str+"\n", "D:\\Dev\\tmp\\to_1252.csv", true);
        System.out.println(str);
       }
------------------------schnipp--------------------------------------------------------------
public void writeFile(String data, String path, boolean append) {
  FileWriter fw = null;
  try {
  fw = new FileWriter(path, append);
  fw.write(data);
  fw.close();
  } catch (IOException e) {
  e.printStackTrace();

  if (fw != null) try { fw.close(); } catch (IOException localIOException1) {  }  } finally { if (fw != null) try { fw.close(); } catch (IOException localIOException2) {
  }  }
  }

Wenn ich den gleichen Code jedoch auf dem UnixServer laufen lass klappt das beim File schreiben zB mit den Umlauten nicht. Der System.out. bringt aber das gewünschte ergebniss auf die Konsole.

Was muss ich machen damit ich auf dem Server auch ein File mit Umlauten bekomme ?

Besten Dank und grüße aus dem zu heissen Stuttgart
xrax
 
Hi

naja, wo gibst du denn das Zielencoding überhaupt an...?
Und womit prüfst du, ob die Datei richtig oder falsch gemacht wurde?

Sonstiges: Ist dir klar, dass deine Konvertierung den Text (je nach Inhalt) zerstören wird?
Was auch immer der Grund für die Win1252-Benutzung ist, ich würde das schleunigst loswerden.
 
Hi,

beim Einlesen gibst du das Encoding (UTF-8) korrekt an, beim schreiben vertraust du aber auf das Plattform-spezifische Standardencoding. Unter Windows ist dies CP1252, unter Linux normalerweise UTF-8.

Grüsse,
BK
 
Ok, vielen Dank. Das gab den (hoffentlichen :)) richtig impuls.

Sowas sollte dann wohl gehen
Code:
  Writer w = new OutputStreamWriter(new FileOutputStream(textFileName), "CP1252");
}
 
Zurück