Ich versuche text/plain
, Zeile für Zeile aus einer Datei über das Internet zu lesen . Der Code, den ich gerade habe, lautet:
URL url = new URL("http://kuehldesign.net/test.txt");
BufferedReader in = new BufferedReader(new InputStreamReader(url.openStream()));
LinkedList<String> lines = new LinkedList();
String readLine;
while ((readLine = in.readLine()) != null) {
lines.add(readLine);
}
for (String line : lines) {
out.println("> " + line);
}
Die Datei test.txt
enthält ¡Hélló!
, die ich zum Testen der Codierung verwende.
Wenn ich das OutputStream
( out
) überprüfe , sehe ich es als > ¬°H√©ll√≥!
. Ich glaube nicht, dass dies ein Problem mit dem ist, OutputStream
da ich out.println("é");
ohne Probleme auskommen kann .
Irgendwelche Ideen zum Lesen von InputStream
als UTF-8? Vielen Dank!
java
utf-8
inputstream
Chris Kuehl
quelle
quelle
text/plain
leider keinen Zugriff auf den Server, der die Datei bereitstellt, und er verwendet keine UTF-8-Codierung. Mir waren keine guten Netzwerkbibliotheken bekannt. irgendwelche Vorschläge?Antworten:
Mein eigenes Problem gelöst. Diese Linie:
muss sein:
oder seit Java 7:
quelle
CharsetDecoder dec
Argument verwenden. Dies ist derselbe Java-Designfehler, den dieOutputStreamWriter
Konstruktoren haben: Nur einer der vier lässt sich tatsächlich herablassen, um Ihnen mitzuteilen, wenn etwas schief geht. Auch dort muss man wieder das ausgefalleneCharsetDecoder dec
Argument verwenden. Das einzig sichere und vernünftige Mittel ist, alle anderen Konstruktoren als veraltet zu betrachten, da ihnen nicht vertraut werden kann, dass sie sich verhalten.StandardCharsets.UTF_8
Versuche dies,.. :-)
quelle
Ich bin jedes Mal auf dasselbe Problem gestoßen, wenn ein Sonderzeichen es als markiert. Um dies zu lösen, habe ich versucht, die folgende Codierung zu verwenden: ISO-8859-1
Ich hoffe, das kann jedem helfen, der diesen Beitrag sieht.
quelle