Software

UTF-8 개발환경 만들기

NYA 2009. 8. 25. 16:36

2007년에 참여했던 스트럿츠를 쓴 자바 프로젝트도, 2008년에 유지보수 했던 닷넷 시스템에서도 UTF-8 인코딩을 썼었다. 해외관련부서에 있었고 여러 국가에서 쓰는 시스템을 만드는 거라 당연한 거였다.
그렇게 익숙해져 있었는데,
여기서는 자바 소스 인코딩 기본을 MS949로 하고, 필요시에만(?) UTF-8로 바꾼다고 한다.
난 그래도 UTF-8이 좋은데..... -_-;

어쨌든 UTF-8로 하는 것이
처음 설정에 약간 손이 가긴 해도 훨씬 윤택한(?) 개발환경을 만들 수 있다는 게 내 생각이다.

특히 리눅스를 빌드 서버로 쓴다면 MS949가 살짝 문제될 수 있다.
일단 리눅스의 디폴트 인코딩은 UTF-8이고, 별도 설정을 하더라도 EUC-KR(한글완성형) 이지, MS949(한글확장완성형) 가 아니다. 간단하게 설명하면 "", "", "","" 이런 글자들을 MS949 에서는 쓸 수 있지만, EUC-KR 에서는 쓸 수 없다는 얘기다. 따라서 리눅스에서 한글확장완성형에만 있는 글자를 인식하기 위해서는 UTF-8로 설정해야 할게다.
(EUC-KR 로 설정한 리눅스가 없어서 확인 불가능 -_-;;)



어쨌든, 내맘대로 UTF-8 개발환경 만들기 순서.


1. 통합빌드 서버의 기본 인코딩을 UTF-8로 설정.
우분투를 통합빌드 서버로 쓴다면 기본이 UTF-8이니 별 문제는 없겠다.


2. 빌드 서버에 접속할 telnet/ssh 터미널 프로그램에서 UTF-8 사용.
옛날 터미널 중에는 UTF-8을 미지원 하는 게 많은 것 같다. 찾아본 결과 UTF-8을 지원하는 터미널은 다음과 같다.
* PuTTY
    설정의 Window > Translation 으로 들어가서
    Received data assumed to be in which character set 옵션을 UTF-8 로 변경.
    PuTTY 다운로드 : http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html
* TeraTerm (4.60 이후 버전)
    Setup > General... > Language 에 Korean 설정.
    Setup > Terminal... 으로 들어가서 아래 쪽에 locale: korean / CodePage: 949 입력.
    TeraTerm 다운로드 : http://en.sourceforge.jp/projects/ttssh2/releases/


3. 이클립스 기본 인코딩 환경을 UTF-8로 설정.
이클립스의 기본 인코딩은 시스템 인코딩에 따르기 때문에 한글 윈도우의 경우 MS949 이다. 이것을 UTF-8로 설정해 주면 된다.
* 이클립스 메뉴 Windows > Preferences
왼쪽 위 검색창에 encod 라고 타이핑 후 왼쪽 메뉴 중 아래 메뉴의 Encoding 옵션을 변경.
* General > Workspace : Java 파일을 비롯한 기본 인코딩
* Web > CSS Files, HTML Files, JSP Files : 웹 관련 각각 파일 타입 별 인코딩
* XML > XML Files : XML은 기본 값이 UTF-8이니 변경할 필요는 없다.
이렇게 변경하면, 새 프로젝트를 만들 때 UTF-8로 생성된다.


4. 이클립스 프로젝트 인코딩을 UTF-8로 설정.
기본을 UTF-8로 변경했더라도 팀에서 설정을 깜빡한 채 체크아웃 받을 수도 있는 팀원을 위해 프로젝트 마다 인코딩 기본값 말고 명시적으로 설정해 주는게 좋다.
* 이클립스 메뉴 Project > Properties
Resource > 에서 Text file encoding 을 Other로 선택하고 UTF-8 로 변경.
여기서 변경하면 프로젝트 안에 .settings/org.eclipse.core.resources.prefs 파일 내용에 UTF-8 로 명시된다. (기본 패키지 익스플로러에서는 .settings 폴더가 안 보이는데, View Menu(▽모양)의 Filters... 에서 *.resources 체크를 해제하면 볼 수 있다)
* 혹시나 기존에 MS949 로 작성된 프로젝트에 한글로 쓰여진 파일이 있다면 파일의 인코딩을 변환해 주어야 한다. EUC-KR과 UTF-8 상호 변환해주는 유틸리티를 구해서 이용하거나( http://jinmoda.tistory.com/228 ), 직접 프로그램을 만들어서 변환해도 된다. 한 두페이지 정도라면 프로젝트 설정 변경 전에 메모장에 copy 했다가. 설정 변경 후 다시 paste 해도 된다;;


5. 메이븐을 쓰는 경우 pom.xml 에 컴파일 인코딩을 UTF-8로 설정.
maven-compiler-plugin 의 <encoding> 속성에 UTF-8을 명시해야 한다는 건 대부분의 사람이 알 것이다.
추가로 site reporting 을 이용한다면, maven-pmd-plugin 과 javancss-maven-plugin 의 <sourceEncoding> 속성에도 명시해야 한다.
인코딩 설정이 메이븐 플러그인 여러 곳에 퍼져 있는 것이 거슬리면, JDK version과 함께 상단에 <properties> 태그에 등록해 두면 편리하다. (maven-pmd-plugin 에서도 JDK 버전을 요구한다)

...생략...
 <properties>
  <encodingtype>utf-8</encodingtype>
  <jdkversion>1.6</jdkversion>
 </properties>
...생략...
    <plugin>
     <artifactId>maven-compiler-plugin</artifactId>
     <configuration>
      <encoding>${encodingtype}</encoding>
      <source>${jdkversion}</source>
      <target>${jdkversion}</target>
     </configuration>
    </plugin>
...생략...



# 인코딩/캐릭터셋 관련 글 참고
 http://mwultong.blogspot.com/2006/11/java-ms949-cp949-encoding.html 
 http://okjsp.pe.kr/seq/114423
 http://altibase.egloos.com/1927504
 http://swbae.egloos.com/1884062
 http://openlook.org/blog/2008/03/06/cb-1208/