목차
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