Whiteship's Note

Stream 인코딩 바꾸기

Java : 2007. 2. 28. 00:19


제 블로그 RSS URL을 날리면 어떤 HTML이 날아오는지 보고 싶습니다.

String request - "http://whiteship.tistory.com";
URL url = new URL(request);
HttpURLConnection connection = (HttpURLConnection)url.openConnection();

이렇게 커넥션 객체를 생성한 다음에.. 이 커넥션에서 다시 InputStream을 얻어서 다시 아래 처럼 InputStreamReader로 그리고 이걸 다시 버퍼를 사용해서 읽을 수 있도록 BufferedReader에 연결 시킵니다.[각주:1]

BufferedReader br = BufferedReader(new InputStreamReader(connection.getInputStream()));

그리고 이후에는 br.readLine() 으로 한줄씩 읽어서 StringBuilder에 쌓아 뒀다가 출력해보면 됩니다.

그렇게 해봤습니다.
이상한 글씨들이 콘솔창에 출력됩니다. OTL..

인코딩 문제인데 구글신에게 물어보니까 InputStreamReader의 생성자를 이용해서 인코딩을 바꿀 수 있다고 합니다. 현재 인코딩을 찍어보니까[각주:2] MS949라고 출력됩니다.

RSS나 기타 오픈API를 사용한 결과물은 UTF-8을 사용한다고 합니다. 그리고 InputStreamReader의 생성자를 보니까 다음과 같이 네개의 생성자가 있었습니다.
사용자 삽입 이미지

이 중에서 제일 아래 녀석을 사용해서 다음과 같이 수정해 줍니다.

br = BufferedReader(new InputStreamReader(connection.getInputStream(), "UTF-8"));

결과물을 확인해 보니 제대로 출력이 되는 걸 볼 수 있었습니다.

  1. 정말 이 부분은 외워 지지가 않네요. 매번 코드를 찾아보게 되는 부분입니다. [본문으로]
  2. InputStreamReader의 String getEncoding()을 사용하면됩니다. [본문으로]

'Java' 카테고리의 다른 글

Collection과 Thread 1  (0) 2007.04.24
Thread와 Collection 관련 링크 모음  (0) 2007.04.19
예제로 살펴보는 쓰레드 제어하기  (0) 2007.04.10
Java 6.0의 Collection  (4) 2007.03.22
private에 대한 착각  (2) 2007.03.05
Stream 인코딩 바꾸기  (0) 2007.02.28
SWT 프로그램 실행하기  (0) 2007.02.21
제8회 한국 자바 개발자 컨퍼런스  (2) 2007.01.25
GC관련 아티클  (0) 2007.01.19
Generics 번외 - 겉모습만 보곤 알 수 없슴.  (2) 2007.01.17
Generics  (2) 2007.01.17
top

Write a comment.