Lesen beliebigen text-Datei, die merkwürdige Codierung?
Ich habe eine text-Datei mit einem seltsamen Kodierung "UCS-2 Little Endian", die ich Lesen möchte seine Inhalte mit Hilfe von Java.
Wie Sie sehen können, wie in der obigen Abbildung den Inhalt der Datei schön erscheinen, in Notepad++, aber wenn ich lese es mit diesem code, nur noch Müll gedruckt wird in der Konsole:
String textFilePath = "c:\strange_file_encoding.txt"
BufferedReader reader = new BufferedReader( new InputStreamReader( new FileInputStream( filePath ), "UTF8" ) );
String line = "";
while ( ( line = reader.readLine() ) != null ) {
System.out.println( line ); //Prints garbage characters
}
Der wichtigste Punkt ist, dass der Benutzer wählt die Datei zu Lesen, so kann es von jeder beliebigen Codierung, und da ich nicht erkennen kann, die Datei-Codierung, die ich entschlüsseln mit "UTF8" aber wie in dem obigen Beispiel ist es nicht richtig gelesen.
Ist es Weg Lesen, so seltsame Dateien in einen richtigen Weg ? Oder zumindest kann ich erkennen, ob mein code wird nicht richtig gelesen ?
InformationsquelleAutor Brad | 2013-03-19
Du musst angemeldet sein, um einen Kommentar abzugeben.
Sie UTF-8 als encoding im Konstruktor von InputStreamReader, so wird es versuchen, Sie zu interpretieren die bytes als UTF-8 anstelle von UCS-LE. Hier ist die Dokumentation:
Charset
Ich nehme an, Sie brauchen, um die Verwendung von UTF-16LE nach.
Hier gibt es mehr Informationen über die unterstützten Zeichensätze und Ihren Java-Namen:
Unterstützte Codierungen
Es gibt keine todsichere Methode, sondern geben Sie diese ein Schuss: juniversalchardet
InformationsquelleAutor tempoc
Du bist die Bereitstellung der falschen Codierung in
InputStreamReader
. Haben Sie versucht, UTF-16LE, wenn statt UTF8?Laut
Charset
:InformationsquelleAutor Vivin Paliath
Können Sie nicht verwenden Sie eine UTF-8-Kodierung für alle Dateien, insbesondere, wenn Sie nicht wissen, welche Datei-Kodierung zu erwarten. Eine Bibliothek, die erkennen können, der Datei-Codierung, bevor Ihr die Datei gelesen werden, zum Beispiel: juniversalchardet oder jChardet
Weitere Infos finden Sie unter Java : Wie bestimmen Sie den richtigen Zeichensatz des Streams
InformationsquelleAutor Dror Bereznitsky