Magic of Love

UTF-8 개발환경 만들기 본문

Software

UTF-8 개발환경 만들기

NYA 2009.08.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/

6 Comments
  • 프로필사진 NYA 2009.08.25 17:40 신고 덧붙여 인코딩이 EUC-KR인 경우 cobertura 테스트 커버리지 리포팅에서 한글이 깨짐..-_-;
  • 프로필사진 BlogIcon FIANCE 2009.08.25 21:08 신고 텍스트큐브의 버그인가 -_-
    카테고리 클릭하면 글목록 나오는거 포스트 숫자 안맞는당;;
    나도 카테고리 선택했을 때 페이징 위에 되게 하고 싶은데 -_- 통 손이 안가네;;;
  • 프로필사진 NYA 2009.08.26 08:25 신고 그러네 ㅋㅋ 그렇다고 비공개글 포함한 숫자랑도 안 맞고.. 올렸다 지우면 그런건가 -_-;
  • 프로필사진 BlogIcon 호연 2009.08.27 09:27 신고 eclipse rcp project를 배포할 수 있는 형태로 묶을 때(feature project -> site project 생성) UTF-8 일 경우 주석 부분을 제외한 부분에 한글이 있으면 인코딩 문제 때문에 에러가 나요.
    그래서 기존 rcp project들은 전부 MS949 로 했던 것이고, 지금 진행하고 있는 rcp project 도 인코딩을 MS949 로 맞추었었죠..
    원래 이클립스 프로젝트를 배포할 땐 MS949 로 맞춰야되는 건지 기본 인코딩이 MS949로 되어있어서 그런건지는 정확히 모르겠어요 -_-;;;;;
  • 프로필사진 NYA 2009.08.27 10:28 신고 아마도 기본 인코딩 때문 아닐까요?
    리눅스에서 이클립스 실행하면 기본 인코딩이 UTF-8이거든요(우분투 데스크탑..) 이클립스가 MS에서 만든 MS949만 예뻐한다는 게 좀 말이 안된다는...^^;

    아무튼.. rcp에서 site project 생성 해본적이 없어서 잘은 모르겠네요... ㅠ 테스트가 필요할 듯.
  • 프로필사진 BlogIcon 호연 2009.08.27 18:31 신고 아.. OS 에 따라서 달라지는 이클립스 기본 인코딩 때문일수도 있겠네요..
    지금 하고 있는 rcp 프로젝트는 주석외엔 한글이 없어서 UTF-8 로 해도 별문제는 없겠네요 ^^;
댓글쓰기 폼