한글 인코딩 관련..

Linux , Max , Windows 를 섞어서 사용하다보면, 영문은 크게 문제 없지만, 한글의 경우, 편집기로 열어서 보면 한글이 알수 없는 문자로 깨져 보인다거나 하는 경우를 볼수가 있는데요, 세계적인 추세인 UTF-8 로 한글을 변경하는 방법 그리고 Linux 에서의 한글 설정등 을 알아볼려고 합니다. 그러면 어느 플렛폼이던지, 한글을 보는데 문제가 없을것입니다.

Linux 에서는 .bash_profile 에 아래와 같이 일반적으로 사용합니다. 그러면 기본적인 OS의 Messages는 영문으로 나오며, OS의 기본 언어는 한글로 변경이 됩니다. 쉽게 설명하자면, GNOME을 실행하면 기본적으로 영문으로 뜨지만, 터미널에 한글을 입력 할수 있게 됩니다. (물론 GNOME에서 약간의 한글 설정 – IM 설정이 필요)

export LANG=ko_KR.UTF-8
export LC_MESSAGES=en_US.UTF-8

이어서, 텍스트 파일에 한글로 된 내용이 있고, 이 파일의 인코딩을 알고 싶다면 아래와 같이 해보면 됩니다. 해당 형식이 맞지 않는다면 에러가 나올것입니다.

iconv -f euckr < 111.txt
iconv -f utf8 < 111.txt

euckr 로 되어 있는 내용을 utf8 로 변경 하고 싶을 경우, 그러나 이경우, 중간에 특수문자와 같은 게 포함되어 있다면 중간에 오류를 발생할수도 있네요, 아주긴 내용의 텍스트를 변경하는게 아니라면, 그리 권장할만한 명령어는 아닌듯 합니다.

iconv -f euckr -t utf8 < 111.txt > 222.txt

txt 가 큰 파일이라면, stream 보다는, VIM 으로 변경하는것을 추천합니다. VI로 열었는데, 글씨가 깨지면, 아래와 같이 변경하면 됩니다.

:e ++enc=euc-kr --> 깨진 글씨가 정상적으로 보이게 해줍니다.
:set fileencoding=utf-8 --> EUCKR을 UTF8 로 변경 해줍니다.
:wq --> 저장 하고 나옵니다.

그리고, 한글 파일의 이름을, UTF-8 형식으로 변환하고 싶을경우, 아래와 같이 하면 됩니다.

convmv -f euckr -t UTF-8 inputfile
convmv -f KOI-8  -t UTF-8 inputfile
convmv -f ASCII  -t UTF-8 inputfile

아래의 내용은 smi 의 자막 파일을 한꺼번에 utf8 로 변경하는 예제 스크립트 입니다.

#!/bin/bash

cd "$1"
for file in *.smi;
do
   if [ ! -e "$file.old" ]
   then
     echo "Check charset of \"$file\" ..."
     file_charset=`chardet "$file" | cut -f 2 -d: | awk '{print $1}'`
     if [ $file_charset != "utf-8" ]
     then
       echo "Processing \"$file\" ..."
       mv "$file" "$file.old"
       iconv -f $file_charset -t utf-8 -c "$file.old" -o "$file"
     fi 
   fi
done

Windows 의 경우에는 별도의 변환해주는 Tool을 구해서 변경 해야 하지만, 리눅스 환경에서는 기본 명령어로 간단(?)하게 변경을 할수 있습니다.

Reference Page : http://vmfhrmfoaj.blogspot.com/2012/09/euc-kr-utf-8.html

답글 남기기

이메일은 공개되지 않습니다. 필수 입력창은 * 로 표시되어 있습니다