이러쿵저러쿵


안드로이드 스튜디오로 처음 개발을 시작하게 되면 어플리케이션(앱) 내에서 사용되는 메시지 등의 한글 텍스트가 깨져보이는 경우가 있습니다.

 

아래는 단순히 [안드로이드 스튜디오 시작!] 버튼을 클릭하면 버튼이 눌렸습니다! 라는 메시지를 띄우도록 프로그래밍 한 것인데요.

실제 메시지가 알아볼 수 없는 형태로 깨져서 보입니다. 그런데 메시지는 깨져 보이지만, 버튼의 한글 텍스트는 잘 보이는 군요.

 

 

 

 

일단 버튼의 텍스트는 strings.xml 파일에 저장된 텍스트로 xml 기본 인코딩이 UTF-8 입니다. 그렇기 때문에 한글 깨짐 현상이 없습니다.

 

그런데 '버튼이 눌렸습니다!' 라는 텍스트는 아래와 같이 실제 버튼이 클릭되었을 때 발생한 이벤트를 처리해주는 JAVA 파일에서 사용하였습니다.

 

    public void onBtnClicked(View v) {
        Toast.makeText(getApplicationContext(), "버튼이 눌렸습니다!", Toast.LENGTH_LONG).show();
    }

 

해당 JAVA 파일이 열린 상태에서 안드로이드 스튜디오 우측 하단에 보면 x-windows-949 로 선택되어 있는 것을 확인하실 수 있습니다.

x-windows-949 가 무슨 인코딩인가 하고 생소한 분들도 계실지 모르겠습니다. x-windows-949 는 우리가 흔히 알고 있는 EUC-KR 인코딩의 확장형인 CP949 인코딩입니다.

 

사실 CP949 인코딩은 한글을 표현할 수 있는 인코딩이지만, JAVA에서의 CP949는 EUC-KR 과 동일하게 취급됩니다. 그렇기 때문에 한글 표현이 가능한 확장형 인코딩인 CP949를 실제 JAVA에서 사용하려면 MS949로 지정해야 합니다. (실제 안드로이드 스튜디오에서의 x-windows-949 는 MS949라고 생각하시면 됩니다.)

 

한글 인코딩에 대해 자세히 알아보기 : http://d2.naver.com/helloworld/19187

 

 

어쨌거나 EUC-KR 계열의 인코딩 사용시, 안드로이드 스튜디오는 JAVA 파일에 작성된 한글을 앱에서 정상적으로 표현하지 못합니다. (사실 스튜디오 버전마다 모두 동일한지는 모르겠지만, Android Stuiod 1.2.2 버전에서는 그런 것 같습니다.)

 

그럼 간단히 영어, 한국어 등 모든 언어를 올바르게 표현해주는 UTF-8 인코딩으로 파일을 변환해 주면 됩니다.

우측 하단 파일 인코딩 설정 부분에서 x-windows-949 를 UTF-8 로 변경합니다.

 

 

새로 변경되는 인코딩으로 인해 해당 파일의 내용이 변경될 수도 있다는 내용에 대해 안내해 주고 있습니다.

[Convert] 버튼을 클릭하여 새로 변경할 인코딩을 적용하여 파일을 저장합니다. (변경해도 파일이 손상되거나 하는 별다른 문제는 발생하지 않습니다.)

 

 

 

 

이제 안드로이드 앱을 다시 실행해 볼까요?

 

 

 

 

한글이 앱에서도 정상적으로 출력되는 것을 확인하실 수 있습니다.

저작자 표시 비영리 변경 금지
신고

Comment +2

  • 지나가던자바개발자 2015.09.21 18:59 신고

    안녕하세요 지나가다 우연히 들렀습니다.
    CP 949는 윈도우에서 관리하는 인코딩 방식이고 code page인가 그럴꺼에요 949번째 위치한 페이지가 한국어이구요
    그래서 CP 949인데 다른데서는 MS 949라고 부르죠

티스토리 툴바