The file
perintah membuat "best-tebakan" tentang pengkodean. Gunakan -i
parameter untuk memaksa file
mencetak informasi tentang penyandian.
Demonstrasi:
$ 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
Inilah cara saya membuat file:
$ echo ä > umlaut-utf8.txt
Sekarang semuanya utf-8. Tapi yakinkan diri Anda:
$ hexdump -C umlaut-utf8.txt
00000000 c3 a4 0a |...|
00000003
Bandingkan dengan https://en.wikipedia.org/wiki/Ä#Computer_encoding
Konversi ke penyandian lain:
$ iconv -f utf8 -t iso88591 umlaut-utf8.txt > umlaut-iso88591.txt
$ iconv -f utf8 -t utf16 umlaut-utf8.txt > umlaut-utf16.txt
Periksa hex dump:
$ hexdump -C umlaut-iso88591.txt
00000000 e4 0a |..|
00000002
$ hexdump -C umlaut-utf16.txt
00000000 ff fe e4 00 0a 00 |......|
00000006
Buat sesuatu yang "tidak valid" dengan mencampur ketiganya:
$ cat umlaut-iso88591.txt umlaut-utf8.txt umlaut-utf16.txt > umlaut-mixed.txt
Apa yang file
dikatakan:
$ 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
tanpa -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
The file
perintah tidak memiliki gagasan tentang "valid" atau "tidak sah". Itu hanya melihat beberapa byte dan mencoba menebak apa pengkodean mungkin. Sebagai manusia, kita mungkin dapat mengenali bahwa file adalah file teks dengan beberapa umlaut dalam pengkodean "salah". Tetapi sebagai komputer itu akan membutuhkan semacam kecerdasan buatan.
Orang mungkin berpendapat bahwa heuristik file
adalah semacam kecerdasan buatan. Namun, bahkan jika itu, itu sangat terbatas.
Berikut ini informasi lebih lanjut tentang file
perintah: http://www.linfo.org/file_command.html