BufferedReader gibt ISO-8859-15 String zurück - wie konvertiert man in UTF16 String?

7

Ich habe eine FTP-Client-Klasse, die InputStream zurückgibt und auf die Datei verweist. Ich möchte die Datei Zeile für Zeile mit BufferedReader lesen. Das Problem besteht darin, dass der Client die Datei im Binärmodus zurückgibt und die Datei die ISO-8859-15-Codierung aufweist.

    
tputkonen 01.07.2009, 15:46
quelle

4 Antworten

21

Wenn die Datei / der Stream / was auch immer wirklich ISO-8859-15-kodierten Text enthält, müssen Sie dies nur angeben, wenn Sie den InputStreamReader erstellen:

%Vor%

Dann wird readLine() gültige Strings in der nativen Kodierung von Java erzeugen (das ist UTF-16, nicht UTF-8).

    
Alan Moore 01.07.2009, 15:58
quelle
9

Versuchen Sie Folgendes:

%Vor%     
bruno conde 01.07.2009 15:52
quelle
1

Die ursprüngliche Zeichenfolge befindet sich in ISO-8859-15, daher wird der von Ihrem InputStreamReader gelesene Byte-Stream in dieser Codierung enthalten sein. Also lesen Sie diese Kodierung ein (spezifizieren Sie dies im InputStreamReader-Konstruktor). Das teilt dem InputStreamReader mit, dass der eingehende Bytedatenstrom in ISO-8859-15 enthalten ist, und führt die entsprechenden Byte-zu-Zeichen-Konvertierungen durch.

Jetzt wird es im Standardformat Java UTF-16 sein, und Sie können dann tun, was Sie wollen.

Ich denke, das aktuelle Problem ist, dass Sie es mit Ihrer Standardcodierung lesen (indem Sie keine Codierung in InputStreamReader angeben) und dann versuchen, es zu konvertieren, zu welcher Zeit es zu spät ist.

Die Verwendung von Standardverhalten für diese Art von Klassen endet oft in Trauer. Es ist eine gute Idee, Kodierungen zu verwenden, wo auch immer Sie können, und / oder die VM-Kodierung über -Dfile.encoding

vorzugeben     
Brian Agnew 01.07.2009 15:50
quelle
0

Hast du es versucht:

%Vor%     
Brian Clapper 01.07.2009 15:50
quelle

Tags und Links