programing

InputStream을 UTF-8로 읽기

yoursource 2022. 12. 31. 18:43
반응형

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

}

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

생성자를 사용하는 경우InputStreamReader(InputStream in, Charset cs), 불량 문자는 사일런트 치환됩니다.이 동작을 변경하려면CharsetDecoder:

public static Reader newReader(Inputstream is) {
  new InputStreamReader(is,
      StandardCharsets.UTF_8.newDecoder()
      .onMalformedInput(CodingErrorAction.REPORT)
      .onUnmappableCharacter(CodingErrorAction.REPORT)
  );
}

그럼 잡아라java.nio.charset.CharacterCodingException.

언급URL : https://stackoverflow.com/questions/4964640/reading-inputstream-as-utf-8

반응형