도움받은 사이트 :

 - http://bitsoul.tistory.com/m/150

 - https://bash.cyberciti.biz/guide/Logical_Not_!

 

리눅스에서 개발하다보면 남의 코드를 받았을 때 한글이 다 깨지는 증상이 있다.

 

이는 저쪽 개발자가 source insight 로 개발한 경우가 대부분이다.

source insight 는 UTF-8 을 지원하지 않아 한글을 입력하면 euc-kr 로 저장된다.

 

이를 리눅스환경에서 열면 한글이 모두 깨져보이게 된다. 

(정확히 표현하면 charset이 euc-kr 이 아닌 경우)

 

검색해보니 어떤 중국인이 source insight UTF-8 플러그인을 개발한 것 같다.

사족인데, source insight 쓸거면 호환성을 위해 UTF-8 플러그인을 설치했으면 한다.

 

아래는 euc-kr 방식의 파일을 리눅스에서 UTF-8 방식으로 전환하는 방법이다.

 

 $ locale

locale 명령어로 linux 로 저장되는 파일 방식을 확인할 수 있다.

내가 문서나 코드를 작성하고 저장했을 때, UTF-8 로 저장되는지 확인해 본다.

 

 $ file -i test.c

test.c 란 파일의 charset 을 확인한다. ISO8859-1 로 나오면 euc-kr로 여겨도... 되나?

한글이 깨진 파일을 위 명령어로 확인해 보면 charset=ISO8859-1 로 나온다.

 

 $ iconv -c -f euc-kr -t utf-8 test.c > test_utf8.c

test.c 의 charset을 UTF-8 로 변경하여 test_utf8.c 란 파일로 저장한다.

이 후, test_utf8.c 를 test.c 로 복사하여 원 코드를 변경할 수 있다.

 

참고로, 아래와 test.c > test.c 같이 파일이름을 같게 하면 안된다. 주의하자.

 $ iconv -c -f euc-kr -t utf-8 test.c > test.c

 

위 번거로움을 아래와 같이 shell script 하나 작성해서 편하게 utf-8로 변경할 수 있겠다.

 $ touch convUTF8.sh

 $ chmod +x convUTF8.sh

 $ vi convUTF8.sh

 

if [ -z $1 ]

then
        echo "Please input file to convert."
        exit
fi

 

if [ ! -f $1 ]
then
        echo "Cannot find the file - $1"
        exit
fi

 

cp $1 $1.org
iconv -c -f euc-kr -t utf-8 $1 > $1.utf8
cp $1.utf8 $1
rm $1
echo "Converted file $1"

 

 

이 후,

 $ convUTF8.sh test.c

하면 test.c 의 charset 을 UTF-8 로 복사하며,

원래 파일은 test.c.org 로 백업한다.

 

 

+ Recent posts