Servlet 에서 한글이 깨지는 현상 해결 방법 |
오랜만에 Servlet 관련 프로그래밍을 했더니, 한글이 깨지는 현상을 겪었다.
구글링을 해본 결과, 그리고 내가 troubleshooting 을 위해 이것저것 해본 결과
Servlet 을 통해서 무언가 Data 를 주고, 받을 때, 예외없이 항상 인코딩에 신경을 써야 한다.
이미지 출처 : ask.nate.com
모든 문서를 UTF-8 인코딩으로 다루자.
JSP 의 경우 상단에 다음과 같이 인코딩 코드를 추가한다.
<%@ pagecontentType="text/html;charset=UTF-8" %>
Response 를 보낼 때 아래와 같이 encoding 해서 보내준다.
res.setContentType( "text/html;charset=UTF-8" );
GET 방식으로 URL 에 파라미터를 넘길 때 아래와 같이 인코딩 해서 보내준다.
encodeURIComponent( "파라미터 포함된 URI" );
HttpURLConnection 을 통해서 내용을 가져오는 경우에도 다음과 같이 Encoding 을 해준다.
BufferedReader reader = new BufferedReader( new InputStreamReader( conn.getInputStream(), "UTF-8" );
Request 로 받은 인자를 다음과 같이 인코딩한다.
String str = req.getParameter( "param" );
str = newString( str, getBytes( "8859_1" ), "UTF-8" );
MYSQL 등을 비롯한 DBMS 도 UTF-8 이 세팅하는 것이 안전하다.
실험결과를 보았을 때, 무슨 내용을 주고 받을 때 항상
UTF-8 로 encoding 이 되어있는지만 확실히 하면, 한글이 깨질 염려는 없어보인다.
'프로그래밍 놀이터 > Web' 카테고리의 다른 글
[HTML] 여러해상도의 단말 모두 지원하기. (0) | 2013.06.13 |
---|---|
[CSS] 주석 쓸 때 주의사항 ( CSS Syntax Checker ) (0) | 2013.06.09 |
[JavaScript/Tutorial] Closure 와 Function.bind 의 사용. (0) | 2013.05.26 |
[JavaScript/Tutorial] Scope. var 없이 변수 정의하면? Global variable 접근방법은? (0) | 2013.05.24 |
[JavaScript/Tutorial] this 란 무엇인가? this 가 가르키는 건 무엇인가? 주의사항은? (0) | 2013.05.24 |
댓글