이 튜토리얼에서는 문자 인코딩의 의미를 설명하고 명령줄 도구를 사용하여 한 문자 인코딩을 사용하는 파일을 다른 인코딩으로 변환하는 몇 가지 예를 제공합니다. 마지막으로 Linux에서 다양한 문자 인코딩을 사용하는 파일을 UTF-8 인코딩으로 변환하는 방법을 살펴보겠습니다.
이진 데이터를 제외하고 컴퓨터는 문자, 숫자 또는 인간이 이해할 수 있는 모든 것을 이해하고 저장할 수 없다는 것을 이미 알고 계실 것입니다. 이진 비트에는 0 또는 1, 참 또는 거짓, 예 또는 아니오라는 두 가지 값만 있을 수 있습니다. 문자, 데이터, 이미지 등 그 밖의 모든 것은 컴퓨터 처리를 위해 바이너리 형식으로 표현되어야 합니다.
간단히 말하면 문자 인코딩은 원시 0과 1을 실제 문자로 해석하도록 컴퓨터에 지시하는 방법입니다. 이러한 문자 인코딩에서 문자는 숫자 문자열로 표시됩니다.
ASCII, ANCI, 유니코드 등 다양한 문자 인코딩 체계가 있습니다. 아래는 ASCII 인코딩의 예입니다.
字符 二进制 A 01000001 B 01000010
Linux에서는 명령줄 도구 iconv를 사용하여 한 인코딩을 사용하여 텍스트를 다른 인코딩으로 변환합니다.
file 명령을 사용하고 -i 또는 --mime 매개변수를 추가하면 파일의 문자 인코딩을 볼 수 있습니다. 이 매개변수를 사용하면 프로그램이 아래 예와 같이 문자열의 MIME을 출력할 수 있습니다. 메일 확장자) 데이터:
$ file -i Car.java $ file -i CarDriver.java
Linux에서 파일 인코딩 보기
iconv 도구는 다음과 같이 사용됩니다.
$ iconv option $ iconv options -f from-encoding -t to-encoding inputfile(s) -o outputfile
여기서 -f 또는 --from-code는 입력 인코딩을 나타내고, -t 또는 --to-encoding은 출력 인코딩을 지정합니다.
기존 인코딩된 문자 집합을 모두 나열하려면 다음 명령을 사용할 수 있습니다.
$ iconv -l
기존 인코딩된 문자 집합 모두 나열
ISO-8859-1 인코딩에서 UTF-8 인코딩으로 파일 변환
아래에서는 한 인코딩 구성표를 다른 인코딩 구성표로 변환하는 방법을 알아봅니다. 다음 명령은 ISO-8859-1 인코딩을 UTF-8 인코딩으로 변환합니다.
다음 문자가 포함된 input.file 파일을 고려해 보세요.
� � � �
먼저 이 파일의 인코딩을 확인한 다음 파일 콘텐츠를 살펴보세요. 마지막으로 모든 문자를 UTF-8 인코딩으로 변환할 수 있습니다.
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
Linux에서 ISO-8859-1을 UTF-8로 변환
참고: 출력 인코딩 뒤에 //IGNORE 문자가 추가되는 경우 문자열인 경우 변환할 수 없는 문자는 변환되지 않으며 변환 후 프로그램은 오류 메시지를 표시합니다.
글쎄, 위의 예에서 출력 인코딩(UTF-8//TRANSLIT) 뒤에 //TRANSLIT 문자열을 추가하면 변환할 문자는 형식 변환 원리를 사용하려고 시도합니다. 즉, 출력 인코딩 체계에서 문자를 표현할 수 없는 경우 유사한 모양의 문자로 대체됩니다.
또한 문자가 출력 인코딩에 없어 해독할 수 없는 경우 출력 파일에서 물음표 ?로 대체됩니다.
여러 파일을 UTF-8 인코딩으로 변환
주제로 돌아갑니다. 여러 파일 또는 특정 디렉터리의 모든 파일을 UTF-8 인코딩으로 변환하려면 다음과 같이 간단한 셸 스크립트를 작성하고 이름을 인코딩.sh로 지정할 수 있습니다.
#!/bin/bash ### 将 values_here 替换为输入编码 FROM_ENCODING="value_here" ### 输出编码 (UTF-8) TO_ENCODING="UTF-8" ### 转换命令 CONVERT=" iconv -f $FROM_ENCODING -t $TO_ENCODING" ### 使用循环转换多个文件 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
이 가이드를 요약하면 문자 인코딩의 개념을 이해하고 한 인코딩 방식을 다른 인코딩 방식으로 변환하는 방법을 아는 것은 컴퓨터 사용자가 텍스트를 처리할 때 숙지해야 하는 지식이며, 프로그래머는 더욱 그렇습니다.