🌈 리눅스 파일 인코딩 변환하기 (File Encoding Converter)
외부에서 FTP를 통해 파일을 서버로 옮기거나 그 외에 리눅스의 환경 차이 등 리눅스에서 파일을 열었을 때 글자가 깨져 보이는 경우가 있다.
따라서, 리눅스에서 파일 인코딩을 변환하기 위해서는 해당 파일의 현재 인코딩을 확인한 후 인코딩 변환 명령어를 입력하여 변환할 수 있다.
1️⃣ 변환할 파일 인코딩 확인
인코딩 변환을 위해서는 현재 파일의 인코딩 정보를 알아야 한다.
따라서 아래의 명령어를 입력하여 현재 파일의 인코딩 정보를 확인한다.
$ file -i 파일명
$ file -bi 파일명
2️⃣ 인코딩 변환하기
아래의 명령어를 입력하여 인코딩 변환을 실행하면 된다.
# 1. 현재 파일 그대로 인코딩 변환
$ iconv --from-code=기존인코딩 --to-code=변환인코딩 파일명
# 2. 현재 파일은 유지하며 새롭게 인코딩된 파일 생성
$ iconv -c -f 기존인코딩 -t 변환인코딩 대상파일명 > 생성파일명
디렉토리로 이동하여 파일이 생성되었음을 확인할 수 있다.
💥 현재 인코딩 정보를 확인할 수 없을 때
아래와 같이 현재 인코딩 정보를 확인할 수 없을 때 사용하는 방법이다.
$ file -I encoding.txt
encoding.txt: text/html; charset=unknown-8bit
#!/bin/bash
INPUT=encoding.txt
for ENCODING_TYPE in $(iconv --list | cut -d ' ' -f 1); do
OUTPUT=output.$ENCODING_TYPE.txt
iconv -f $ENCODING_TYPE -t UTF8 $INPUT > $OUTPUT
if [ $? -eq 0 ]; then
echo "[SUCCESS] converted successfully ($ENCODING_TYPE -> UTF8)"
else
echo "[FAIL] cannot convert ($ENCODING_TYPE -> UTF8)"
rm -f $OUTPUT
fi
done
위 Shellscript를 분석하자면 다음과 같다.
→ iconv에서 변환 가능한 인코딩 타입을 모두 찾아 ENCODING_TYPE에 넣는다.
→ for문을 통해 인코딩 타입을 바꿔가며 OUTPUT이라는 파일을 생성한다.
→ if문에서 원본 파일의 인코딩 타입과 새로 생성된 파일의 타입이 일치하면 생성된 파일을 보존한다.
(이때 보존되는 파일의 이름은 인코딩 타입과 같은 이름이므로 타입을 알 수 있다.)
→ else에서 원본 파일의 인코딩 타입과 새로 생성된 파일의 타입이 다르다면 생성된 파일을 삭제한다.
📌 참고사이트
https://stackoverflow.com/questions/805418/how-can-i-find-encoding-of-a-file-via-a-script-on-linux
'Infra' 카테고리의 다른 글
[Linux] 리눅스 tail 명령어 사용법 (0) | 2021.08.04 |
---|---|
[Docker] 도커 자주 사용하는 명령어 정리 (0) | 2021.07.28 |
[Server] Oracle WebLogic 14 설치 (4) | 2021.06.01 |
[AWS/RDS] 03. RDS 데이터베이스 접속 (0) | 2021.05.07 |
[AWS/RDS] 02. 파라미터를 통한 한글 설정 (0) | 2021.05.07 |
최근댓글