1. euc-kr의 파일내용의 html 파일을 utf-8로 변경

만일 HTML 파일내용을 EUC-KR에서 UTF-8로 변경해야 할 경우라면 다음과 같은 명령을 사용한다.

$ iconv -c -f euc-kr -t utf-8 a.html > a.html.utf8

※ 옵션설명

iconv -f=<원문인코딩> -t=<출력인코딩> inputName -o=outputName

여러 파일 혹은 디렉토리상의 여러 파일을 바꾸고자 한다면 아래와 같은 코드의 쉘스크립트를 돌린다.

#!/bin/bash
for DIR in `find . -type f `
do
echo "$DIR done............................"
iconv -c -f euc-kr -t utf-8 $DIR > aa
rm -f $DIR ; mv aa $DIR
done

iconv옵션중에 "-c"를 붙여주는 이유는 간혹 잘못입력된 한글 혹은 특수문자의 경우 UTF-8 변환이 되지 않는다.
이와같은 경우로 파일이 삭제되는 경우를 방지하기 위해 -c를 주면 변환할 수 없는 파일이 있더라도 강제로 변환하기 위함이다.
위처럼 파일의 내용을 변경했으면 meta 태그를 변경하는과정이 필요하다. 아무리 실제 파일 내용이 UTF-8일지라도
이걸 표현하는 Explorer 나 Firefox에서는 태그가 제대로 표현되어 있지 않으면 UTF-8로 표현되지 못한다.
따라서 다음과 같은 명령으로 meta의 character-set을 변경해야한다.

$ find . -name '*.html' -exec perl -pi -e 's/euc-kr/utf-8/g' {} \;

 

2. euc-kr의 파일명을 utf-8로 변경하기

convmv 는 가 깔려 있지 않다면 rpm 또는 yum을 통해 설치한다.

$ convmv -f euc-kr -t utf-8 -r --notest *

※ 옵션 설명

-r : 하위 디렉토리까지

--notest 테스트 없이 바로 변경

* 모든 파일

 

3. 참고 쉘 스크립트

codechange.sh 코드 내용

#!/bin/sh 
for cfile in `find . -name "*.${1}"` 
do 
echo Processing ${cfile} 
iconv -f "$2" -t "$3" "$cfile" > "${cfile}_" 
mv "${cfile}_" "$cfile" 
done

$ codechange.sh jsp euc-kr utf-8 

위 코드를 위와 같이 실행하면 현재 디렉토리 이하의 모든 *.jsp 파일의 인코딩을 utf-8로 바꿔준다. 물론 반대도 가능하다.

 

#!/bin/sh

for X in `find . -name "*"`;do
filename=`echo $X | iconv -f euc-kr -t utf-8`
mv "$X" "$filename"
done

 

파일 인코딩 변환 스크립트

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다