[file] Linux에서 스크립트를 통해 파일 인코딩을 찾는 방법은 무엇입니까?

디렉토리에있는 모든 파일의 인코딩을 찾아야합니다. 사용 된 인코딩을 찾는 방법이 있습니까?

file명령은이 작업을 수행 할 수 없습니다.

관심있는 인코딩은 ISO-8859-1입니다. 인코딩이 다른 것이라면 파일을 다른 디렉토리로 옮기고 싶습니다.



답변

찾고있는 것 같습니다 enca. 인코딩을 추측하고 변환 할 수도 있습니다. 그냥 보는 사람이 페이지 .

또는 실패하면 file -i(linux) 또는 file -I(osx)를 사용하십시오. 파일에 대한 MIME 유형 정보가 출력되며 여기에는 문자 세트 인코딩도 포함됩니다. 나는 그것에 대한 맨 페이지도 발견 했다. 🙂


답변

file -bi <file name>

많은 파일에 대해이 작업을 수행하려는 경우

for f in `find | egrep -v Eliminate`; do echo "$f" ' -- ' `file -bi "$f"` ; done


답변

uchardet -Mozilla에서 포팅 된 인코딩 검출기 라이브러리.

용법:

~> uchardet file.java
UTF-8

다양한 Linux 배포판 (Debian / Ubuntu, OpenSuse-packman 등)은 바이너리를 제공합니다.


답변

다음은 MacOsX에서 작동하는 파일 -I 및 iconv를 사용하는 예제 스크립트입니다. 질문에 대해서는 iconv 대신 mv를 사용해야합니다.

#!/bin/bash
# 2016-02-08
# check encoding and convert files
for f in *.java
do
  encoding=`file -I $f | cut -f 2 -d";" | cut -f 2 -d=`
  case $encoding in
    iso-8859-1)
    iconv -f iso8859-1 -t utf-8 $f > $f.utf8
    mv $f.utf8 $f
    ;;
  esac
done


답변

그것이 iso-8859-1인지 판단하기는 정말 어렵습니다. iso-8859-1 일 수 있지만 7 비트 문자 만있는 텍스트가있는 경우 알 수 없습니다. 8 비트 문자가있는 경우 상위 영역 문자가 순서대로 인코딩됩니다. 따라서 사전을 사용하여 어떤 단어인지 더 잘 추측하고 어떤 문자인지를 결정해야합니다. 마지막으로 utf-8 일 가능성이 있음을 감지하면 iso-8859-1이 아닌지 확인하십시오.

아무 말도하지 않으면 알 수 없기 때문에 인코딩은 가장 어려운 작업 중 하나입니다.


답변

데비안에서는 다음을 사용할 수도 있습니다. encguess:

$ encguess test.txt
test.txt  US-ASCII


답변

인코딩을 8859에서 ASCII로 변환하려면

iconv -f ISO_8859-1 -t ASCII filename.txt