웹사이트 검색

Linux에서 파일을 UTF-8 인코딩으로 변환하는 방법


이 가이드에서는 문자 인코딩이 무엇인지 설명하고 명령줄 도구를 사용하여 파일을 한 문자 인코딩에서 다른 문자 인코딩으로 변환하는 몇 가지 예를 다룹니다. 그런 다음 마지막으로 여러 파일을 문자 집합(문자 집합)에서 Linux의 UTF-8 인코딩으로 변환하는 방법을 살펴보겠습니다.

이미 염두에 두셨겠지만, 컴퓨터는 비트를 제외하고 인간이 인식할 수 있는 문자, 숫자 또는 기타 모든 것을 이해하거나 저장하지 않습니다. 비트에는 0 또는 1, true 또는 false, false의 두 가지 값만 있을 수 있습니다. >예 또는 아니요. 문자, 숫자, 이미지 등 다른 모든 것은 컴퓨터가 처리하려면 비트 단위로 표현되어야 합니다.

간단히 말해서, 문자 인코딩은 원시 0과 1을 실제 문자로 해석하는 방법을 컴퓨터에 알리는 방법입니다. 여기서 문자는 숫자 집합으로 표시됩니다. 파일에 텍스트를 입력할 때 우리가 구성하는 단어와 문장은 다양한 문자로 구성되며 문자는 문자 세트로 구성됩니다.

ASCII, ANSI, 유니코드 등 다양한 인코딩 방식이 있습니다. 다음은 ASCII 인코딩의 예입니다.

Character  bits
A               01000001
B               01000010

Linux에서는 iconv 명령줄 도구를 사용하여 텍스트를 한 인코딩 형식에서 다른 인코딩 형식으로 변환합니다.

MIME 유형 인쇄를 활성화하는 -i 또는 --mime 플래그를 사용하여 file 명령을 사용하여 파일 인코딩을 확인할 수 있습니다. 아래 예와 같은 문자열입니다.

file -i Car.java
file -i CarDriver.java

iconv를 사용하는 구문은 다음과 같습니다.

iconv option
iconv options -f from-encoding -t to-encoding inputfile(s) -o outputfile 

여기서 -f 또는 --from-code는 입력 인코딩을 의미하고 -t 또는 --to-encoding은 지정합니다. 출력 인코딩.

알려진 모든 코드화된 문자 세트를 나열하려면 아래 명령을 실행하십시오.

iconv -l 

파일을 UTF-8에서 ASCII 인코딩으로 변환

다음으로, 한 인코딩 체계에서 다른 인코딩 체계로 변환하는 방법을 알아 보겠습니다. 아래 명령은 ISO-8859-1에서 UTF-8 인코딩으로 변환합니다.

다음 문자가 포함된 input.file이라는 파일을 생각해 보세요.


� � � �

먼저 파일의 문자 인코딩을 확인한 다음 파일 내용을 살펴보겠습니다. 자세히 보면 모든 문자를 ASCII 인코딩으로 변환할 수 있습니다.

iconv 명령을 실행한 후 아래와 같이 출력 파일의 내용과 문자의 새로운 인코딩을 확인합니다.

file -i input.file
cat input.file 
iconv -f ISO-8859-1 -t UTF-8//TRANSLIT input.file -o out.file
cat out.file 
file -i out.file 

참고: to-encoding에 //IGNORE 문자열을 추가한 경우 변환할 수 없는 문자와 오류가 표시됩니다. 변환 후.

다시 한 번, 문자열 //TRANSLIT가 위의 예(ASCII//TRANSLIT)와 같이 to-encoding에 추가된다고 가정하면 변환되는 문자는 필요에 따라 음역되고 가능하다면 . 이는 대상 문자 세트에서 문자를 표현할 수 없는 경우 하나 이상의 유사하게 보이는 문자를 통해 대략적으로 표현할 수 있음을 의미합니다.

결과적으로 음역할 수 없고 대상 문자 세트에 없는 모든 문자는 출력에서 물음표 (?)로 대체됩니다.

여러 파일을 UTF-8 인코딩으로 변환

주요 주제로 돌아가서, 디렉터리의 여러 파일 또는 모든 파일을 UTF-8 인코딩으로 변환하려면 다음과 같이 encoding.sh라는 작은 셸 스크립트를 작성할 수 있습니다.

#!/bin/bash
#enter input encoding here
FROM_ENCODING="value_here"
#output encoding(UTF-8)
TO_ENCODING="UTF-8"
#convert
CONVERT=" iconv  -f   $FROM_ENCODING  -t   $TO_ENCODING"
#loop to convert multiple files 
for  file  in  *.txt; do
     $CONVERT   "$file"   -o  "${file%.txt}.utf8.converted"
done
exit 0

파일을 저장한 다음 스크립트를 실행 가능하게 만듭니다. 파일(*.txt)이 있는 디렉터리에서 실행하세요.

chmod  +x  encoding.sh
./encoding.sh

중요: 특정 인코딩에서 다른 인코딩으로 여러 파일을 일반적으로 변환하는 데 이 스크립트를 사용할 수도 있습니다. 간단히 FROM_ENCODING 값을 가지고 놀 수 있습니다. 및 TO_ENCODING 변수, 출력 파일 이름 "$ {file%.txt}.utf8.converted"를 잊지 마세요.

자세한 내용은 iconv 매뉴얼 페이지를 살펴보세요.

man iconv

이 가이드를 요약하자면, 인코딩을 이해하고 한 문자 인코딩 체계에서 다른 문자 인코딩 체계로 변환하는 방법은 모든 컴퓨터 사용자에게 필요한 지식이며 텍스트를 다루는 프로그래머에게는 더욱 그렇습니다.

마지막으로 질문이나 피드백이 있는 경우 아래 댓글 섹션을 사용하여 저희에게 연락하실 수 있습니다.