Saya mencoba membaca dari text/plain
file melalui internet, baris demi baris. Kode yang saya miliki sekarang adalah:
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);
}
File,, test.txt
berisi ¡Hélló!
, yang saya gunakan untuk menguji pengkodean.
Saat saya meninjau OutputStream
( out
), saya melihatnya sebagai > ¡Hélló!
. Saya tidak percaya ini adalah masalah OutputStream
karena saya dapat melakukannya out.println("é");
tanpa masalah.
Ada ide untuk membaca dari bentuk InputStream
UTF-8? Terima kasih!
java
utf-8
inputstream
Chris Kuehl
sumber
sumber
text/plain
Sayangnya, saya tidak akan memiliki akses ke server yang menyajikan file dan tidak menggunakan pengkodean UTF-8. Saya tidak mengetahui adanya perpustakaan jaringan yang bagus; ada saran?Jawaban:
Memecahkan masalah saya sendiri. Garis ini:
perlu:
atau sejak Java 7:
sumber
CharsetDecoder dec
argumen. Ini adalah bug desain Java yang sama dengan yang dimiliki olehOutputStreamWriter
konstruktor: hanya satu dari empat yang benar-benar merendahkan untuk memberi tahu Anda ketika terjadi kesalahan. Anda juga harus menggunakanCharsetDecoder dec
argumen mewah di sana. Satu-satunya hal yang aman dan waras untuk dilakukan adalah menganggap semua konstruktor lain tidak digunakan lagi, karena mereka tidak dapat dipercaya untuk berperilaku.StandardCharsets.UTF_8
Coba ini,.. :-)
sumber
Saya mengalami masalah yang sama setiap kali menemukan karakter khusus yang menandainya sebagai . untuk mengatasi ini, saya mencoba menggunakan pengkodean: ISO-8859-1
Saya harap ini dapat membantu siapa saja yang melihat postingan ini.
sumber