한글이 깨집니다
ls 명령을 통한 파일 목록에서, vi 등의 파일 편집기에서 한글에 해당하는 부분이 깨져 보이는 경우가 있습니다.
터미널 프로그램에서 한글 입출력을 제대로 하기 위해서는 여러 가지 조건이 일치해야 합니다.
- 파일이 한글을 포함하고 있는 텍스트 파일이라면 그 인코딩을 알아야 합니다.
유닉스/리눅스에서 사용하는 한글 인코딩은 크게 2가지입니다. 확장유닉스코드(EUC)라고 하는 완성형이고
다른 하나는 UTF-8 형식입니다. 한글문서가 이 중 어떤 포맷으로 되어 있느냐에 따라서 결과가 달라 보입니다.텍스트 문서에는 그것이 한글인지 영어인지, EUC인지 UTF-8인지에 대한 정보는 없습니다.
사용자가 그리고 응용프로그램이 그렇게 읽을 준비를 하고, 정해진 규칙대로 읽어서 필요한 폰트의 글꼴로 표현하는 것입니다. - 위 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
이 설정이 위에서 말한 응용프로그램에게 그렇게 처리하도록 하라는 설정입니다. - 위 1의 문서를 처리하는 응용프로그램이 UTF-8을 처리할 수 있어야 합니다.
유닉스/리눅스 응용프로그램이 한글을 처리할 수 있어야 하고 UTF-8 문서라면 이 또한 처리할 수 있어야 합니다.
즉, 셸이나 vim 편집기 등에서 한글(중국어, 일본어 등) 및 UTF-8에 대한 고려가 되어 있어야 합니다.
다행히도 최근의 리눅스/유닉스는 한글 및 UTF-8을 처리할 수 있습니다. - 터미널 프로그램에서는 인코딩 설정이 위 2의 설정과 같아야 합니다.
Xshell 인코딩을 기본언어로 설정한 경우는 한글 윈도우의 경우 EUC 한글입니다.
위 2의 설정이 UTF-8이라면 인코딩을 유니코드(UTF-8)을 선택해야 합니다.어떤 문서가 어떤 인코딩으로 된 문서인지 바이트 구성만으로 알 수도 있지만 비전문가가 그것을 알기는 어렵습니다.이런 저런 인코딩을 대입한 후 인식할 수 있는 문자가 보이면 그 인코딩이으로 되어 있다는 것을 알 수 있는 것입니다.한글을 포함한 것 같은 어떤 문서를 Xshell로 열어 확인하고자 할 때 다음과 같이 해 보십시오.
- 셸 환경 변수 확인
$echo $LANG
koKR.UTF-8 또는 koKR.utf8
혹은 koKR.eucKR 또는 enUS.88591 등 UTF라는 문자가 들어가지 않았을 경우 - Xshell 인코딩 확인 및 설정
koKR.UTF-8일 경우 => 유니코드(UTF-8)로 설정
koKR.eucKR일 경우 => 기본언어로 설정 - vim 등으로 해당 파일 열기
문자열 확인. 문자열이 깨질 경우 LANG 환경 변수를 서로 다른 것으로 바꿔서 1~3 과정 진행.