728x90
반응형
파일 인코딩 방식 확인
외부에서 작성한 파일을 리눅스(Ubuntu)로 가져왔을 경우, 다음과 같이 글자가 깨져있는 경우가 많다.
다음과 같이 입력하면 파일의 인코딩 방식을 확인할 수 있다. 아래 예시의 경우 "iso-8859-1"으로 인코딩되어있음을 알 수 있다.
$ file -bi [파일명]
text/plain; charset=iso-8859-1
파일이 여러개일 경우 아래와 같이 입력하면 여러 파일의 인코딩 방식을 한번에 확인할 수 있다.
$ file -i *
a.out: application/x-executable; charset=binary
test.c: text/x-c; charset=utf-8
파일 인코딩 형식 변환
한글이 깨지지 않도록 iconv 명령어를 사용하여 인코딩 형식을 변환해주어야 한다.
iconv 명령어 형식은 다음과 같다.
$ iconv -f [변환할 파일의 인코딩 방식] -t [변환할 인코딩 방식] [파일명] > [변환될 파일 명]
ex) iconv -f iso-8859-1 -t utf-8 abc.txt > abc.utf8
"> [변환될 파일명]" 이 부분을 생략하면 인코딩 형식 변환 결과를 터미널에 출력해버리므로 저장되지 않는다.
하지만, 인코딩 형식을 변환한 파일을 동일한 파일 명으로 저장하고 싶을 수 있다.
그렇다고 "변환하기 전 파일명"과 "변환될 파일 명"을 동일하게 작성하면 파일 내용이 사라질 수 있다.
아래와 같이 작성하면 안된다!
$ iconv -f iso-8859-1 -t utf-8 abc.txt > abc.txt (X)
동일한 파일명으로 변환하도록 쉽게 처리하기 위해선, 다음과 같이 사용하면 된다.
즉, 우선 [파일명].utf8 이라는 파일 명으로 인코딩 형식을 변환하고, 다시 원래대로 파일명을 변경해주는 명령어이다. 그러면 인코딩 형식을 변경하기 전의 파일을 덮어씌워서 저장하게 된다.
$ iconv -f iso-8859-1 -t utf-8 [파일명] > [파일명].utf8 && mv [파일명].utf8 [파일명]
파일이 여러 개일 경우 일괄 처리 방법(find, iconv)
파일이 여러 개일 경우 다음 명령어를 사용하여 쉽게 일괄적으로 처리할 수 있다.
물론 "iso-8859-1"의 경우 각자 상황에 따라 파일의 인코딩 방식을 확인한 뒤에 수정해주어야한다.
find . -type f -exec bash -c 'iconv -f iso-8859-1 -t utf-8 {} > {}.utf8 && mv {}.utf8 {}' -- {} \;
728x90
반응형
'Linux > Ubuntu' 카테고리의 다른 글
WSL2를 활용해 Windows에서 리눅스 사용하기 (0) | 2021.12.03 |
---|---|
[Ubuntu] VMware 설치부터 Ubuntu Desktop, Ubuntu Server 설치 과정까지 알아보기 | Ubuntu Desktop, Ubuntu Server 차이 (0) | 2021.03.02 |