반응형

 

 

 

 

 

 

🌈 리눅스 파일 인코딩 변환하기 (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

 

 

 

 

 

 

 

반응형
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기