[java] InputStream을 UTF-8로 읽기

text/plain인터넷을 통해 한 줄씩 파일 을 읽으려고합니다 . 지금 가지고있는 코드는 다음과 같습니다.

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√≥!. 나는 문제 없이 OutputStream할 수 있기 때문에 이것이 문제라고 생각하지 않습니다 out.println("é");.

읽기에 대한 아이디어가 InputStreamUTF-8로 형성 됩니까? 감사!



답변

내 문제를 해결했습니다. 이 줄 :

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) {

}

이 게시물을 보는 모든 사람에게 도움이되기를 바랍니다.


답변