일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 유학
- @JsonView
- ue5
- 인물
- weblogic
- 최근증시
- AT&T
- flex하는게 아니었는데..
- JPA
- mysql
- kospi
- jdk17
- 삼성 플렉스북
- 증시
- spring message converters
- HRD
- UE4
- 펜실베이니아
- 주식
- 어학연수
- 금융공학
- java
- 필라델피아
- paper2d
- spring security
- 월화수목금토익
- mastering unreal engine
- 학생비자
- rollbackOnly
- spring
Archives
- Today
- Total
HeBhy, since 1983.
jsp에서 java.net.URL로 xml 로딩시 utf-8 한글인코딩 깨짐 문제- 해결법 본문
resin(pro 3.x 최근버젼) 에선 왠지 java.net.URL 을 이용해 xml을 가져오면 한글이 중간중간 깨져버려는 어이없는 사고가(?) 발생하더군요.. 물론 java.net.URL을 이용해 일반 utf-8 웹문서를 가져오는건 전혀 문제가 없었습니다.
보니까 스트링을 자꾸 변환해서 바이트로 쪼개서 이리저리 변환하다보니 손실이 생기는거 같더군요..
(예를 들어 new String(a.getByte(), "UTF-8") 이런코드는 별로 좋은코드가 아니라고 생각합니다)
나름 생각해본결과, 어디서 보길 리더를 사용해야 한글이 깨지지 않는다고 들어서 열심히 찾아다녔습니다;
해서, 다음과 같이 하시면 java사용시 xml파일을 java.net.URL을 이용해 가져올 때 한글 깨짐문제가 발생하지 않게됩니다.
// url 설정 String szUrl = "http://openapi.naver.com/search?key=&target=kin&sort=sim"; szUrl += ("&query=go"); szUrl += ("&display=5"); szUrl += ("&start=1"); InputStream is = null; InputStreamReader isr = null; is = new URL(szUrl).openStream(); isr = new InputStreamReader(is, "utf-8"); StringBuffer sb = new StringBuffer(); int c; while ((c = isr.read()) != -1) {sb.append((char) c);} isr.close(); is.close(); // 여기까지 xml 문서를 utf-8 형식으로 스트링형태로 sb에 저장하였습니다. sb.toString()으로 출력하면 문제없음이 확인됩니다. // 이걸 xml document로 파싱하겠습니다. DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); dbf.setValidating(false); dbf.setNamespaceAware(true); DocumentBuilder db = dbf.newDocumentBuilder(); Document xmldoc = db.parse(new InputSource(new StringReader(sb.toString())));
이상입니다. xmldoc에 xml문서를 담는데까지 성공하였고 이후는 xml 처리방식대로 하시면 되겠습니다.
자바 개발자분들 화이팅~! (한글문제는 언제나 짜증이네요;)
- 네이버 openapi 카페에 올린 글입니다.
'Dev > Web' 카테고리의 다른 글
Weblogic 10.3 & Mysql 에서 JDBC Connection Pool (0) | 2009.05.31 |
---|---|
Apache 2.x & Weblogic 10.3 연동 (0) | 2009.05.17 |
BEA Weblogic 10.3 / Oracle DB 11g 교체 (0) | 2009.05.17 |
Java Beans (0) | 2008.11.12 |
java(jsp) 에서 바이트단위로 문자열 자르기(한글깨짐없이) (8) | 2008.03.10 |
Comments