Input/Output Encoding ISO->UTF8

BenitoJuarez

Neues Mitglied
Hallo zusammen,

ich habe ein kleines Encodingproblem: Der Text in der Datei iso.txt ist (vermutlich) iso-8859-1 kodiert. Diesen möchte ich in eine UTF-Datei überführen. Knackpunkt dabei ist der Bindestrich (Bytewert 150). Das Ergebnis meiner Versuche ist in utf_java.txt zu besichtigen, wie man sieht wird der Bindestrich vermurkst. Ganz generell muss es aber funktionieren, mit einem Online-Konverter habe ich ein korrektes Ergebnis erzielt (utf_online.txt), da musste ich aber als Quellzeichensatz windows-1252 eingeben.

Mein Code:

Java:
        PrintWriter out = new PrintWriter ( "c:\\utf_java.txt", "UTF-8" ) ;
      
        FileInputStream byteStream = new FileInputStream("c:\\Inkonsistenzen\\iso.txt");
      
        InputStreamReader  characterStream = new InputStreamReader(byteStream, "ISO-8859-1");
      
        int c;
       while ((c = characterStream.read()) != -1)
       {
          out.print((char)c);
       }
      
       out.flush();
       out.close();
      
       characterStream.close();
Hat jemand eine Idee wie mans besser macht?
 

Anhänge

Zuletzt bearbeitet von einem Moderator:
Java:
try(BufferedReader reader = new BufferedReader(new FileReader(new File("iso.txt")));
    BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(new File("utf.txt")), StandardCharsets.UTF_8))) {
    String line = null;

    while((line = reader.readLine()) != null) {
        writer.write(line);
        writer.write('\n'); // Zeilenumbruch
    }
}

Ist jetzt einfach mal ungetesteter Code der funktionieren SOLLTE.
Der FileReader sollte eigentlich automatisch alles was Encoding beim Lesen betrifft machen.
Beim Schreiben wird dann explizit das Encoding angegeben.
 
Der FileReader sollte eigentlich automatisch alles was Encoding beim Lesen betrifft machen.
Woher sollte der FileReader denn automatisch wissen welches Encoding benutzt wurde? Es gibt in Textdateien keinen Header oder ähnliches in dem das verwendete Encoding steht (außer evtl. bei UTF-8 oder UTF-16 das BOM). Der FileReader verwendet immer das Default Encoding der VM.
 

Zurück
Oben