インターネットを介してtext/plain
ファイルから1行ずつ読み取ろうとしています。私が今持っているコードは:
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);
}
ファイルtest.txt
には¡Hélló!
が含まれており、エンコードをテストするために使用しています。
OutputStream
(out
)を確認すると、> ¬°H√©ll√≥!
と表示されます。 out.println("é");
を問題なく実行できるため、これがOutputStream
の問題だとは思わない。
UTF-8としてInputStream
を読み取るためのアイデアはありますか?ありがとう!
自分の問題を解決しました。この行:
BufferedReader in = new BufferedReader(new InputStreamReader(url.openStream()));
する必要があります:
BufferedReader in = new BufferedReader(new InputStreamReader(url.openStream(), "UTF-8"));
またはJava 7以降:
BufferedReader in = new BufferedReader(new InputStreamReader(url.openStream(), StandardCharsets.UTF_8));
String file = "";
try {
InputStream is = new FileInputStream(filename);
String UTF8 = "utf8";
int BUFFER_SIZE = 8192;
BufferedReader br = new BufferedReader(new InputStreamReader(is,
UTF8), BUFFER_SIZE);
String str;
while ((str = br.readLine()) != null) {
file += str;
}
} catch (Exception e) {
}
これを試して、.. :-)
特殊文字が��としてマークするのを見つけるたびに、同じ問題に遭遇しました。これを解決するために、エンコードを使用してみました:ISO-8859-1
BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream("txtPath"),"ISO-8859-1"));
while ((line = br.readLine()) != null) {
}
これがこの投稿を見た人の助けになることを願っています。