2012년 5월 10일 목요일

Mac Eclipse에서 glassfish를 사용할 때 한글 깨짐.

일반적인 Eclipse의 한글 깨짐 현상에서도 적용 가능하다.

<개발 환경>
mac os lion 10.7.3
eclipse 3.7.1 indigo
glassfish 3.1.2
java jdk 1.7

<문제>
console 창을 포함하여 몇군데에서 한글이 깨져서(물음표) 잘못 표시되는 현상

아래의 몇가지 정도를 확인하면 웬만큼 해결이 가능하다.

1-1. glassfish가 설치된 곳의 bin폴더에서 편집기 혹은 vi 로 asadmin 파일을 연다.
glassfish설치경로/bin/asadmin
1-2. 아래의 붉은색부분을 추가해준다
exec "$JAVA" -Dfile.encoding=UTF-8 -jar "$AS_INSTALL_LIB/admin-cli.jar" "$@"

2. terminal 을 열어서 glassfish가 설치된 곳의 bin폴더에서 붉은색을 실행한다.
./asadmin create-jvm-options -Dfile.encoding=UTF-8

3. glassfish admin console으로 접속한다. (일반적으로 http://localhost:4848/ )
< 구성 - Server Config - JVM 설정 - JVM 옵션 > 으로 들어가서
속성중에 
< -Dfile.encoding=UTF-8 > 이 있는지 확인하고 없으면 추가해준다.


Eclipse on Mac (http://ids.snu.ac.kr/wiki/Eclipse) 아래 부분 참고

(Windows와 Linux에서는 발생하지 않는 문제임)
java file의 encoding을 UTF-8로 설정해도, 문자열을 제대로 출력하지 못하는 문제가 발생한다. Debug를 해보면 변수 안의 한글은 제대로 들어있으나, 콘솔에는 ???로 출력된다.

  • System.out.println("한글")
  • System.out.println(유니코드 문자열이 담긴 String)

이를 해결하기 위해서는 다음 두가지 인코딩 설정을 일치시켜야 한다.

VM 인코딩
  • (Open Run Dialog) -> Arguments -> VM arguments 에서 -Dfile.encoding=UTF-8 추가
콘솔 인코딩
  • (Open Run Dialog) -> Common -> Console Encoding 에서 UTF-8 설정



어처구니 없게도 기본 값을 설정하는 메뉴가 없다
파일 자체의 인코딩이 UTF-8인 것은 상관 없다. 실제로 Windows에서는 위 두 인코딩이 모두 MS949로 설정되어있다. 그러나 맥의 경우는 이것이 기본적으로 일치하지 않는지 문제가 생긴다. 위의 설정을 일일히 하기 귀찮으므로, 다음 두 가지 설정을 추가로 한다.


eclipse 를 UTF-8 환경으로 띄우기


  • Eclipse -> (Show Package Contents) -> Contents -> MacODS -> eclipse.ini 에 -Dfile.encoding=UTF-8 추가
  • 결과 상당 부분의 인코딩 기본 옵션이 UTF-8로 변한다 :) 콘솔 인코딩의 기본 값이 UTF-8로 바뀐다.

VM 인코딩


  • Eclipse -> Preferences -> Java -> Installed JREs -> (선택된 JVM에서 Edit...) -> Default VM Arguments 에서 -Dfile.encoding=UTF-8 추가
-----------------------
추가 #1

위의 것으로도 해결이 되지 않을 경우 아래 링크를 참조한다.

한글(utf-8) 설정#


ㅇ /WEB-INF/sun-web.xml 에 다음 내용을 추가 한다


  1. <parameter-encoding default-charset="UTF-8"/>

File Encoding을 utf-8로 바꾸자#

특히 리눅스 같은 경우. 패키지로 등록을 했다면, 로그파일에 나오는 한글은 ?? 로 나타난다. 이런 이유는 기본적으로 iso-8859-1로 잡혀져 있기
때문인데, 정말 문제가 되는것은 파일 처리와 같은 것을 할 경우.. 문제가 될수 있다.

ㅇ 해결방법
  • Admin Consol로 로그인(htt://서버IP:4848/)  > server-config > JVM options 에 다음 내용을 추가 하면 된다.
  1. -Dfile.encoding=utf-8

ㅇ 발생하는 문제점
이경우 Netbeans에서 개발을 할 때 위와같이 적용을 하면 log보기에서 한글이 모두 꺠져 나온다. 원인은 NetBeans의 로그보기가
utf-8로 읽지 못해서 발생하는 결과다. 이때 [NetBeans Dir]\etc\netbeans.conf 를 열어
netbeans_default_options에 '-J-Dfile.encoding=UTF-8'를 추가 하면 된다




위의 것을 모두 실행하고도 이클립스 웹에서 인코딩이 깨진다면 eclipse 내장 브라우저의 문제일 수 있다. 
임시방편으로 Eclipse-Preference-General-Web Browser-Use External web browser를 사용하도록 한다.


댓글 없음:

댓글 쓰기