반응형
EUC-KR 한글 인코딩을 UTF-8로 일괄 변경하려면?
윈도우에서 리눅스로 파일 전송 시 우리를 귀찮게 하는 것 중 하나가 바로 한글 인코딩 차이로 인한 한글 깨짐 현상이다.
인코딩 설정이 맞지 않으면 파일명과 파일 내용이 깨질 수 있는데 여기서는 파일 내용이 깨지는 문제에 대해 다루도록 한다.
인코딩 설정을 변경하기 위해 필요한 것은 iconv이다.
Wikipedia에서 iconv 설명을 보면 서로 다른 character encoding 사이의 변환을 수행해주는 것을 알 수 있다.
먼저 파일이 하나인 경우에는 아래의 명령어를 통해 인코딩을 변경이 가능하다.
$ iconv -c -f euc-kr -t utf-8 test.txt > test-utf8.txt
변경할 파일이 많은 경우 위의 명령을 하나씩 입력하여 변경하는 것은 어려운 일이다.
이 경우 아래의 명령을 이용하면 폴더 내의 모든 파일을 한 번에 변경이 가능하다.
$ find . -type f -exec iconv -f euc-kr -t utf-8 "{}" -o path/to/destination/"{}" \;
이때 주의할 점은 find 명령어가 하위 폴더까지 검색을 하므로
destination 폴더가 변환하려는 파일과 같은 폴더 또는 하위에 있으면 이미 변환한 파일을 또다시 변환하려 한다는 것이다.
이로 인해 다음과 같이 출력 파일을 열 수 없다는 메시지가 나오는데,
이는 이미 해당 파일들이 utf-8로 변환되었기에 destination 폴더에서 euc-kr로 인코딩된 파일을 찾을 수 없다는 내용이므로
해당 메시지를 무시하거나, destination 폴더를 상위에 위치시키면 해결된다.
그리고 '위치에 잘못된 입력 순서열이 있음'과 같은 메시지가 나오며 변환이 완료되지 않는 경우가 있는데,
iconv: 33106774 위치에 잘못된 입력 순서열이 있음
이 때는 -c 옵션을 추가하면 오류를 무시하고 변환을 진행하게 된다.
반응형
'Development' 카테고리의 다른 글
Ruby 처음 배우기 : 윈도우에 Ruby 설치하기 (0) | 2019.07.21 |
---|---|
[Markdown 문법] 3. 개행(New line) (0) | 2019.07.21 |