2014년 3월 8일 토요일

리눅스 Tomcat 한글 깨짐

리눅스에서 설치하는 TOMCAT은 기본 인코딩이 UTF-8이 아니라서 설정 해주지 않으면 한글이 깨져나온다.
아래의 내용은 TOMCAT 7.0.47 을 기준으로 작성하였다.

소스 레벨의 처리

HTML

  • HTML5의 경우
    <!DOCTYPE html>
    <html lang="ko">
    <head>
        <meta charset="utf-8"/>
    ...
    
  • 그 외
    ...
    <head>
        <META HTTP-EQUIV="contentType" CONTENT="text/html;charset=UTF-8">
    ...
    

Servlet

  • doPost() 나 doGet() 안에
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    
        request.setCharacterEncoding("UTF-8");
    
        // 파라미터 받는 부분 utf-8 사용
        String keyword = request.getParameter("keyword");
        String urlEncodedKeyword = URLEncoder.encode(keyword,"utf-8");
    

JSP

  • 페이지 상단 지시자 지정 부분에
    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    

서버 설정 처리

server.xml

TOMCAT/conf 에 있는 server.xml 의 connector 지정 부분(70행 쯤에 있다)에 아래와 같이 URIEncoding를 추가하여 지정해준다.

setenv.sh

TOMCAT/bin 디렉토리에 setenv.sh 라는 파일을 새로 만들어 아래 내용 추가하여 기본 파일 인코딩을 utf-8로 지정해 주고 TOMCAT 재시작
    #!/bin/bash
    JAVA_OPTS="$JAVA_OPTS -Dfile.encoding=\"utf-8\""
이렇게 하면 되는 이유는 TOMCAT/bin/catalina.sh 를 열어보면 알 수 있다.
약 23행 정도에 아래와 같은 내용이 있다.
TOMCAT 실행 관련 환경변수는 직접 catalina.sh 에 추가하지 말고, TOMCAT/bin/setenv.sh 에 작성하라고 되어 있다. 실제 스크립트에 setenv.sh를 체크하는 부분이 작성되어 있다.

댓글 없음:

댓글 쓰기