Comment vérifier si le fichier a une nomenclature dans le texte utf-8

18

Comment puis-je vérifier si un fichier texte utf-8 a une nomenclature à partir de la ligne de commande?

filecommande me montre UTF-8 Unicode text.

Mais je ne sais pas, cela signifie qu'il n'y a pas de nomenclature dans le fichier.

J'utilise Ubuntu 12.04.

fer à repasser
la source
Notez qu'il n'y a pas de nomenclature dans UTF-8: c'est une fonctionnalité de UTF-16. Un fichier UTF-8 peut commencer par le caractère U + FEFF, mais dans ce cas, il s'agit d'un espace de largeur nulle.
Gilles 'SO- arrête d'être méchant'

Réponses:

30

filevous dira s'il y a une nomenclature. Vous pouvez tester:

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

Remarque: selon le filechangelog, cette fonctionnalité existait déjà en 2007. Donc, cela devrait fonctionner sur n'importe quelle machine actuelle.

vinc17
la source
1
Merci de répondre. Ma fileversion est file-5.09et le résultat était /dev/stdin: ASCII text. Cela dépend-il de la version de file?
ironsand
@Tetsu J'ai testé avec file5.04 (Debian squeeze) et c'était OK. Même en 2007, selon le changelog (non testé). Mais vous pouvez faire le test que j'ai donné dans ma réponse.
vinc17
Je viens d'installer language-pack-jadepuis apt, votre exemple fonctionne parfaitement. Merci de votre aide!
ironsand
4

Si vous l'exécutez, stat fileNamecela devrait vous donner exactement les trois caractères. Lorsque j'ai ouvert le fichier dans l'éditeur, je n'ai rien pu voir. Donc, notant que la taille du fichier était de 3, cela m'a permis de comprendre qu'il avait une nomenclature.

De plus, le message ici a été utile dans mon cas.

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