안드로이드 개발 질문/답변
(글 수 45,052)
여기다가 질문할게 아닐 것 같긴한데요..
워낙 자주 들어오고 조언을 잘 해주셔서 질문 드립니다.
openAPI를 사용해서 xml을 받아오는데 쿼리를 던질때는 utf-8로 인코딩해서 던져야 검색의 결과물이 나옵니다.
그래서 그 결과를 그냥 1.xml로 저장시키면 한글은 깨져 나옵니다.
한글을 깨짐없이 할려면 어떻게 해야하나요? URLDecoder.decode( buffer, "UTF-8" ) 이나 EUC-KR로 해봐도 그대로 한글은 깨지네요..
방법 좀 가르쳐 주세요..
워낙 자주 들어오고 조언을 잘 해주셔서 질문 드립니다.
openAPI를 사용해서 xml을 받아오는데 쿼리를 던질때는 utf-8로 인코딩해서 던져야 검색의 결과물이 나옵니다.
그래서 그 결과를 그냥 1.xml로 저장시키면 한글은 깨져 나옵니다.
한글을 깨짐없이 할려면 어떻게 해야하나요? URLDecoder.decode( buffer, "UTF-8" ) 이나 EUC-KR로 해봐도 그대로 한글은 깨지네요..
방법 좀 가르쳐 주세요..
2010.07.27 22:28:40
자답합니다~
위에 xml파서로 하는 방법도 있군요~
URLEncoder로는 되지 않더라구요. 그래서 올린거구요~
자바에서 예전에 학교수업에서 배운적이 있는데 스트림과 스트림리더의 차이점이랄까요?
URL클래스로 웹에서 데이터를 가져오면 스트림형이기 때문에 유니코드인 한글은 깨져서 나오는 걸로 결론이 났네요.
그래서 리더를 통해서 utf-8 파라미터를 하나 주니까 바로 원상복구 되네요.. 리더를 써서 받아오고 있었지만
리더 자체에서도 언어셋을 정해주는 인자가 있었다니..
새로운 발견을 했습니다.
두분 다 답변 감사드립니다^^




XmlPullParserFactory factory = XmlPullParserFactory.newInstance();
factory.setNamespaceAware(true);
XmlPullParser xpp = factory.newPullParser();
URL u = new URL(m_sConnectUrl);
// InputStream in = u.openConnection().getInputStream();
InputStream in = u.openStream();
xpp.setInput(in, "utf-8");
이렇게 해보세요 . . ㅎㅎ 검증된건 아닌데 마침 비슷한 작업중이라.