Tôi đang cố đọc từng dòng từ một text/plain
tệp qua internet. Mã tôi có ngay bây giờ là:
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);
}
Tệp, test.txt
chứa ¡Hélló!
, mà tôi đang sử dụng để kiểm tra mã hóa.
Khi tôi xem lại OutputStream
( out
), tôi thấy nó là > ¬°H√©ll√≥!
. Tôi không tin rằng đây là một vấn đề với OutputStream
vì tôi có thể làm out.println("é");
mà không có vấn đề.
Bất kỳ ý tưởng nào để đọc dạng InputStream
UTF-8? Cảm ơn!
1
Giao thức HTTP chỉ định mã hóa. Tại sao bạn không sử dụng API thư viện để xử lý điều đó cho bạn? Bạn không bao giờ phải đoán mã hóa như thế này. Tôi không có ý tiêu cực: bạn đang làm rất tốt! Tôi chỉ tự hỏi liệu không có cách nào dễ dàng hơn.
—
tchrist
text/plain
Rất tiếc, tôi sẽ không có quyền truy cập vào máy chủ đang cung cấp tệp và nó không sử dụng mã hóa UTF-8. Tôi không biết về bất kỳ thư viện mạng nào tốt; bất kỳ đề xuất?
Nhìn vào các tài liệu , tôi sẽ không nghĩ rằng bạn sẽ phải chỉ định mã hóa nào cả. Tôi ngạc nhiên khi họ cung cấp cho bạn một luồng byte! Bạn có quyền truy cập vào URLConnection bên dưới , từ đó bạn có thể kiểm tra Content-Encoding, sau đó mở InputStreamReader với đối số chính xác. Kiểm tra nhanh nguồn không hiển thị bất cứ điều gì có vẻ như làm điều đó cho bạn, điều này có vẻ khá tệ hại và dễ xảy ra lỗi, vì vậy có thể tôi đã bỏ sót điều gì đó.
—
tchrist