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