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.


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.


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
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.