Como verificar se o arquivo possui uma lista técnica no texto utf-8

18

Como posso verificar se um arquivo de texto utf-8 tem uma lista técnica na linha de comando?

filecomando me mostra UTF-8 Unicode text.

Mas eu não sei, significa que não há lista técnica no arquivo.

Estou usando Ubuntu 12.04.

ferros e areias
fonte
Observe que não há BOM no UTF-8: esse é um recurso do UTF-16. Um arquivo UTF-8 pode começar com o caractere U + FEFF, mas nesse caso é um espaço de largura zero.
Gilles 'SO- stop be evil'

Respostas:

30

filedirá se existe uma lista técnica. Você pode testar:

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

Nota: de acordo com o filechangelog, esse recurso já existia em 2007. Portanto, isso deve funcionar em qualquer máquina atual.

vinc17
fonte
11
Obrigado pela resposta. Minha fileversão é file-5.09e o resultado foi /dev/stdin: ASCII text. Depende da versão do file?
ironsand
@Tetsu Eu testei com file5.04 (Debian squeeze) e estava tudo bem. Mesmo em 2007, de acordo com o changelog (não testado). Mas você pode fazer o teste que eu dei na minha resposta.
precisa saber é
Acabei de instalar language-pack-jaa partir apt, então o seu exemplo funciona perfeitamente. Obrigado pela ajuda!
ironsand
4

Se você executá- stat fileNamelo, deve fornecer exatamente os três caracteres. Quando abri o arquivo no editor, não consegui ver nada. Perceber que o tamanho do arquivo era 3 me deu clareza de que ele possui uma lista técnica.

Além disso, o post aqui foi útil no meu caso.

hexdump -n 3 -C 2.txt
00000000 ef bb bf
ef bb bf // YES
akshita007
fonte