한글이 깨집니다

ls 명령을 통한 파일 목록에서, vi 등의 파일 편집기에서 한글에 해당하는 부분이 깨져 보이는 경우가 있습니다.

터미널 프로그램에서 한글 입출력을 제대로 하기 위해서는 여러 가지 조건이 일치해야 합니다.


  1. 파일이 한글을 포함하고 있는 텍스트 파일이라면 그 인코딩을 알아야 합니다.


    유닉스/리눅스에서 사용하는 한글 인코딩은 크게 2가지입니다. 확장유닉스코드(EUC)라고 하는 완성형이고
    다른 하나는 UTF-8 형식입니다. 한글문서가 이 중 어떤 포맷으로 되어 있느냐에 따라서 결과가 달라 보입니다.

    텍스트 문서에는 그것이 한글인지 영어인지, EUC인지 UTF-8인지에 대한 정보는 없습니다.
    사용자가 그리고 응용프로그램이 그렇게 읽을 준비를 하고, 정해진 규칙대로 읽어서 필요한 폰트의 글꼴로 표현하는 것입니다.


  2. 위 1의 인코딩대로 시스템의 환경 변수를 설정해야 합니다.

    이제부터가 사용자 그리고 응용프로그램이 읽을 준비를 해야 하는 단계입니다.

    EUC 한글이라면 사용하는 셸(sh, csh 등)에 따라,

    $ LANG=koKR.eucKR; export LANG 혹은 setenv LANG koKR.eucKR


    UTF-8 한글이라면 사용하는 셸(sh, csh 등)에 따라,

    $ LANG=koKR.UTF-8; export LANG 혹은 setenv LANG koKR.UTF-8


    이 설정이 위에서 말한 응용프로그램에게 그렇게 처리하도록 하라는 설정입니다.


  3. 위 1의 문서를 처리하는 응용프로그램이 UTF-8을 처리할 수 있어야 합니다.

    유닉스/리눅스 응용프로그램이 한글을 처리할 수 있어야 하고 UTF-8 문서라면 이 또한 처리할 수 있어야 합니다.
    즉, 셸이나 vim 편집기 등에서 한글(중국어, 일본어 등) 및 UTF-8에 대한 고려가 되어 있어야 합니다.
    다행히도 최근의 리눅스/유닉스는 한글 및 UTF-8을 처리할 수 있습니다.


  4. 터미널 프로그램에서는 인코딩 설정이 위 2의 설정과 같아야 합니다.

    Xshell 인코딩을 기본언어로 설정한 경우는 한글 윈도우의 경우 EUC 한글입니다.
    위 2의 설정이 UTF-8이라면 인코딩을 유니코드(UTF-8)을 선택해야 합니다.


    어떤 문서가 어떤 인코딩으로 된 문서인지 바이트 구성만으로 알 수도 있지만 비전문가가 그것을 알기는 어렵습니다.
    이런 저런 인코딩을 대입한 후 인식할 수 있는 문자가 보이면 그 인코딩이으로 되어 있다는 것을 알 수 있는 것입니다.

    한글을 포함한 것 같은 어떤 문서를 Xshell로 열어 확인하고자 할 때 다음과 같이 해 보십시오.


  1. 셸 환경 변수 확인 

    $echo $LANG
    koKR.UTF-8 또는 koKR.utf8
    혹은 koKR.eucKR 또는 enUS.88591 등 UTF라는 문자가 들어가지 않았을 경우



  2. Xshell 인코딩 확인 및 설정

    koKR.UTF-8일 경우 => 유니코드(UTF-8)로 설정
    ko
    KR.eucKR일 경우 => 기본언어로 설정



  3. vim 등으로 해당 파일 열기

    문자열 확인. 문자열이 깨질 경우 LANG 환경 변수를 서로 다른 것으로 바꿔서 1~3 과정 진행.