안드로이드 개발 질문/답변
(글 수 45,052)
구글 날씨 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));
-------
왜 첫번째는 안되고 두번째는 되는걸가요..
매번 인코딩 문제 나올때마다 막히네요 ㅠ