Wie lese ich eine Datei in Java mit einer bestimmten Zeichenkodierung?

Ich versuche, eine Datei als UTF-8 oder Windows-1252 einzulesen, abhängig von der Ausgabe dieser Methode:

public Charset getCorrectCharsetToApply() {
    // Returns a Charset for either UTF-8 or Windows-1252.
}

Bisher habe ich:

String fileName = getFileNameToReadFromUserInput();
InputStream is = new ByteArrayInputStream(fileName.getBytes());
InputStreamReader isr = new InputStreamReader(is, getCorrectCharsetToApply());
BufferedReader buffReader = new BufferedReader(isr);

Das Problem, das ich habe, konvertiert dasBufferedReader Instanz zu einemFileReader.

Außerdem:

Der Name der Datei selbst (fileName) kann nicht vertraut werden, um ein bestimmtes zu seinCharset; Manchmal enthält der Dateiname UTF-8-Zeichen und manchmal Windows-1252. Gleiches gilt für den Inhalt der Datei (jedoch, wenn Dateiname und Dateiinhalt dies tunimmer passende Zeichensätze haben).Nur die Logik drinnengetCorrectCharsetToApply() Sie können den anzuwendenden Zeichensatz auswählen und versuchen, eine Datei anhand ihres Namens zu lesenvor Das Aufrufen dieser Methode kann sehr gut dazu führen, dass Java versucht, den Dateinamen mit der falschen Codierung zu lesen.

Danke im Voraus!

Antworten auf die Frage(3)

Ihre Antwort auf die Frage