이 file
명령은 인코딩에 대해 "최상의 추측"을합니다. 인코딩에 대한 정보 -i
를 강제 file
로 인쇄 하려면이 매개 변수를 사용하십시오 .
데모:
$ file -i *
umlaut-iso88591.txt: text/plain; charset=iso-8859-1
umlaut-utf16.txt: text/plain; charset=utf-16le
umlaut-utf8.txt: text/plain; charset=utf-8
파일을 생성 한 방법은 다음과 같습니다.
$ echo ä > umlaut-utf8.txt
요즘 모든 것이 utf-8입니다. 그러나 스스로를 확신 시키십시오 :
$ hexdump -C umlaut-utf8.txt
00000000 c3 a4 0a |...|
00000003
https://en.wikipedia.org/wiki/Ä#Computer_encoding 과 비교
다른 인코딩으로 변환하십시오.
$ iconv -f utf8 -t iso88591 umlaut-utf8.txt > umlaut-iso88591.txt
$ iconv -f utf8 -t utf16 umlaut-utf8.txt > umlaut-utf16.txt
16 진 덤프를 확인하십시오.
$ hexdump -C umlaut-iso88591.txt
00000000 e4 0a |..|
00000002
$ hexdump -C umlaut-utf16.txt
00000000 ff fe e4 00 0a 00 |......|
00000006
세 가지를 모두 혼합하여 "유효하지 않은"것을 만듭니다.
$ cat umlaut-iso88591.txt umlaut-utf8.txt umlaut-utf16.txt > umlaut-mixed.txt
뭐라고 file
:
$ file -i *
umlaut-iso88591.txt: text/plain; charset=iso-8859-1
umlaut-mixed.txt: application/octet-stream; charset=binary
umlaut-utf16.txt: text/plain; charset=utf-16le
umlaut-utf8.txt: text/plain; charset=utf-8
없이 -i
:
$ file *
umlaut-iso88591.txt: ISO-8859 text
umlaut-mixed.txt: data
umlaut-utf16.txt: Little-endian UTF-16 Unicode text, with no line terminators
umlaut-utf8.txt: UTF-8 Unicode text
file
명령은 "유효"또는 "무효"의 아무 생각이 없습니다. 그것은 단지 몇 바이트를보고 인코딩이 무엇인지 추측하려고합니다. 인간으로서 우리는 파일이 "잘못된"인코딩으로 움라우트가있는 텍스트 파일임을 인식 할 수 있습니다. 그러나 컴퓨터로는 일종의 인공 지능이 필요합니다.
휴리스틱은 file
일종의 인공 지능 이라고 주장 할 수 있습니다 . 그럼에도 불구하고 그것은 매우 제한적인 것입니다.
file
명령 에 대한 자세한 정보는 다음과 같습니다 . http://www.linfo.org/file_command.html