본문 바로가기
프로그래밍 놀이터/Web

[servlet] 한글이 깨지는 현상 해결 방법.

by 돼지왕 왕돼지 2013. 5. 28.
반응형

 Servlet 에서 한글이 깨지는 현상 해결 방법  

오랜만에 Servlet 관련 프로그래밍을 했더니, 한글이 깨지는 현상을 겪었다.

구글링을 해본 결과, 그리고 내가 troubleshooting 을 위해 이것저것 해본 결과

Servlet 을 통해서 무언가 Data 를 주고, 받을 때, 예외없이 항상 인코딩에 신경을 써야 한다.



Servlet 한글이 깨지는 현상.이미지 출처 : 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 이 되어있는지만 확실히 하면, 한글이 깨질 염려는 없어보인다.



반응형

댓글