Dites que je modifie un fichier avec vim (ou gvim). Je n'ai aucune idée du codage du fichier et je veux savoir s'il s'agit du format UTF-8 ou ISO-8859-1 ou autre. Puis-je dire à vim de me montrer quel encodage est utilisé?
Le paramètre fileencoding indique le codage du tampon actuel:
:set fileencoding
fileencoding=utf8
Il n'y a pas vraiment de moyen courant de déterminer le codage d'un fichier en texte brut, car ces informations ne sont pas enregistrées dans le fichier lui-même - à l'exception des fichiers UTF-8 où vous avez une prétendue nomenclature indiquant le codage. C'est pourquoi les fichiers XML et HTML ont des métatags charset.
Vous pouvez appliquer un encodage particulier avec le paramètre 'encoding'. Voir :help encoding
et :help fileencoding
dans Vim pour savoir comment l'éditeur gère ces paramètres. Vous pouvez également ajouter plusieurs paramètres de codage de fichiers à votre vimrc pour que vim tente de détecter en fonction de ceux répertoriés.
Notez que l'encodage des fichiers est non explicitement indiqué n'importe où dans un fichier. Ainsi, VIM et les autres applications doivent deviner le codage. La manière canonique de faire cela est avec l'application chardet
, qui peut être exécutée à partir de VIM comme suit:
:!chardet %
La réponse fournie par jtimberman vous indique le codage du tampon actuel , qui peut ne pas être identique au fichier sur le disque. Ainsi, vous remarquerez que chardet
affichera parfois un codage différent de VIM, en particulier si vous avez configuré VIM pour toujours utiliser un codage spécifique (c.-à-d. UTF-8).
La bonne chose à propos de chardet
est qu’elle donne un indice de confiance, alors que VIM peut avoir tort (et a souvent tort) de deviner le codage s’il n’ya pas beaucoup de caractères supérieurs à\x7F (ASCII 127). Par exemple, ajouter un seul א
à un fichier long de PHP code permet à chardet
de penser que le fichier est ISO-8859-2
avec une confiance de 0,72, alors que l'ajout de la phrase légèrement plus longue שלום, עולם!
donne UTF-8 avec un score de confiance 0,99. Dans les deux cas, set fileencoding?
a affiché UTF-8
non pas parce que le fichier sur le disque était au format UTF-8, mais parce que VIM est configuré pour utiliser UTF-8 en interne.