Come verificare se il file ha una DBA nel testo utf-8


18

Come posso verificare se un file di testo utf-8 ha una DBA dalla riga di comando?

fileil comando mi mostra UTF-8 Unicode text.

Ma non lo so vuol dire che non vi è alcuna DBA nel file.

Sto usando Ubuntu 12.04.


Nota che non c'è nessuna distinta base in UTF-8: questa è una caratteristica di UTF-16. Un file UTF-8 può iniziare con il carattere U + FEFF, ma in questo caso è uno spazio di larghezza zero.
Gilles 'SO- smetti di essere malvagio' il

Risposte:


30

fileti dirà se c'è una DBA. Puoi testare:

$ /usr/bin/printf "\ufeff...\n" | file -
/dev/stdin: UTF-8 Unicode (with BOM) text

Nota: secondo il filelog delle modifiche, questa funzione esisteva già nel 2007. Quindi, dovrebbe funzionare su qualsiasi macchina corrente.


1
Grazie per la risposta. La mia fileversione è file-5.09e il risultato è stato /dev/stdin: ASCII text. Dipende dalla versione di file?
Feronsand

@Tetsu Ho provato con file5.04 (compressione Debian) ed era OK. Anche nel 2007, secondo il log delle modifiche (non testato). Ma puoi fare il test che ho dato nella mia risposta.
vinc17,

Ho appena installato language-pack-jadal apt, allora il vostro esempio funziona perfettamente. Grazie per l'aiuto!
Iron and

4

Se lo esegui stat fileNamedovrebbe darti esattamente i tre caratteri. Quando ho aperto il file nell'editor, non sono riuscito a vedere nulla. Quindi notare che la dimensione del file era 3 mi ha dato la chiarezza che ha una DBA.

Inoltre, il post qui è stato utile nel mio caso.

hexdump -n 3 -C 2.txt
00000000 ef bb bf
ef bb bf // YES
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.