본문 바로가기

Java

UTF-8로 개발환경을 도배하자.


개발을 하다보면 캐릭터셋문제로 골머리를 앓는 경우가 많이 있다.  필자는 그래서 신규로 프로젝트를 시작할 경우 아예 모든 환경을 UTF-8로 셋팅해 버린다. 물론 UTF-8까지 필요가 있을까 하는 생각을 할 수도 있지만 나중에 다국어환경을 고려해도 아예 UTF-8로 시작하는게 나쁜 방법은 아닌것 같다.
다음은 UTF-8로 개발환경을 셋팅하는 방법이다.

1. 이클립스의 Content type을 UTF-8로 설정
   - 이렇게 설정하면 해당하는 type을 파일로 저장할 때 UTF-8형식으로 저장하게 된다.


2. Workspace의 Text file encoding을 UTF-8로 선택
   - 이렇게 설정해야 svn의 소스비교시 캐릭터셋이 깨지는 문제를 막을 수 있다.


3. 데이터베이스 인스턴스를 UTF-8형태로 생성
  - Mysql같은 경우 아래와 같은 방식으로 생성하면 된다.

CREATE DATABASE database_utf8 DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;

4. web.xml에 아래와 같이 인코딩 필터 셋팅
  - 서블릿과 통신할 때 데이터를 주고 받는 것에 대한 인코딩을 설정하는 부분이다.
<filter>
    <filter-name>encodingFilter</filter-name>
    <filter-class>
        org.springframework.web.filter.CharacterEncodingFilter
    </filter-class>
    <init-param>
        <param-name>encoding</param-name>
        <param-value>UTF-8</param-value>
    </init-param>
  </filter>
  <filter-mapping>
      <filter-name>encodingFilter</filter-name>
      <url-pattern>/*</url-pattern>
  </filter-mapping>
</filter>

5. 톰캣설치디렉토리의 /conf/server.xml 에 URIEncoding 항목 추가
  - WAS와 get방식으로 데이터를 주고받는 것에 대한 인코딩 설정부분이다.
<Connector port="8080" URIEncoding="UTF-8" maxHttpHeaderSize="8192"
               maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
               enableLookups="false" redirectPort="8443" acceptCount="100"
               connectionTimeout="20000" disableUploadTimeout="true" />

6. JSP파일의 최상단에 UTF-8 directive 추가
  - JSP컴파일시 사용할 인코딩을 설정하는 부분이다.
<%@ page language="java" contentType="text/html; charset=UTF-8"    pageEncoding="UTF-8"%>

7. JSP파일의 meta태그에 UTF-8추가
  - 브라우저에서 인식할 캐릭터셋을 설정하는 부분이다.
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>

8. 메이븐을 쓴다면 다음과 같이 plugin에 UTF-8 설정을 추가해 준다.
<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-compiler-plugin</artifactId>
    <configuration>
        <source>1.5</source>
        <target>1.5</target>
        <encoding>UTF-8</encoding>
    </configuration>
</plugin>
<plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-javadoc-plugin</artifactId>
        <configuration>
                <charset>UTF-8</charset>
                <docencoding>UTF-8</docencoding>
                <encoding>UTF-8</encoding>
                <quiet>true</quiet>
        </configuration>
</plugin>    
<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-pmd-plugin</artifactId>
  <version>2.4</version>
  <configuration>
    <sourceEncoding>utf-8</sourceEncoding>
    <targetJdk>1.5</targetJdk>
    <minimumTokens>10</minimumTokens>
  </configuration>
</plugin>

출처 http://avatar72.tistory.com/97