제임스딘딘의
Tech & Life

개발자의 기록 노트/Android

[안드로이드] HttpURLConnection을 통해 html 접근시 한글깨짐 문제 해결 방법

제임스-딘딘 2010. 11. 4. 23:28

HttpURLConnection을 통해 html 접근시 한글깨짐 문제 해결 방법

종종 안드로이드 앱에서 HTML 페이지 내용을 읽어올 필요가 있는 경우, 사용되는 HTTP 커넥션을 위한 클래스로 HttpURLConnection 라는것이 있다.
그런데 이걸 통해서 한글이 포함된 사이트의 HTML을 가져올경우 한글이 깨지는 문제를 겪게될 경우가 있을 수 있다.

내 경우에는 이 HttpURLConnection을 아래과 같이 사용하고는 했는데, 한글이 제대로 보이지 않고, 깨짐 현상이 보였다.

HttpURLConnection conn = (HttpURLConnection)url.openConnection();
BufferedReader br = new BufferedReader(new InputStreamReader(conn.getInputStream()));


이는 접속의 문제가 아니라 InputStream 으로 받아오는 과정에서의 문제라고 한다.
이 문제를 해결하기 위해서, 받아오는 텍스트의 인코딩 방식을 바꿔주는 방법이 있는데, 다음과 같이 수정하면 된다.

BufferedReader br = new BufferedReader(new InputStreamReader(conn.getInputStream(), "euc-kr"));

이렇게 문자 인코딩을 euc-kr로 명시적으로 지정해주는 방법을 사용하니깐 내 경우는 해결되었다. :D

이 방법이 안될경우 추가로 시도해 볼 방법은 아래와 같다.

 연결하고자 하는 URL의 meta tag에서 문자 인코딩을 파싱하여, euc-kr인지 utf-8인지, 혹은 그 외의 다른 것인지를 판단한 다음, 위 InputStreamReader를 생성할 때 두번째 파라미터를 그에 해당되는 값으로 넣어준다.