구글 날씨 api를 통해 날씨정보 파싱하려는데..

 

이노무 인코딩 문제가 골때리네요 ㅠ

 

문자 인코딩 방식이 euc-kr 이라고 하기에 분명 바꿔서 했는데.. 아무리 해도 글자가 깨지는 겁니다..

 

그래서 검색해보다가 예시로 잘해둔 사이트를 찾아보니 역시 euc-kr로 인코딩 되있는데 이건 또 됩니다..

 

인코딩 하는 과정이 약간 다르긴 한데 어떤 차이인지를 모르겠네요..

 

1. 제가 한 방식.. (문자깨짐)

 먼저 xml 문서를 String 형태로 모두 다운받은뒤.. (변수 xml이라고 하고)

 InputStream istream = new ByteArrayInputStream(xml.getBytes("euc-kr"));

 parse(istream);

 

 이렇게 문자열을 먼저 다운 받고 euc-kr로 인코딩 변경한뒤 파싱할때 인자로 입력 스트림을 전달했습니다..

 아무리 해도 글자 깨지더군요..

 

2. 되는 방식 - 페이지에서 다운받을때 얻은 입력스트림을 인코딩 바꾼후 그대로 parse메서드의 인자로 전달.

  HttpURLConnection conn = (HttpURLConnection)url.openConnection(); 

  InputStreamReader is = new InputStreamReader(conn.getInputStream(), "euc-kr");
  parse(new InputSource(is));

 

-------

왜 첫번째는 안되고 두번째는 되는걸가요..

매번 인코딩 문제 나올때마다 막히네요 ㅠ