Comment puis-je utiliser vim pour convertir mon fichier en utf8?

Réponses:

179

Si vous éditez un fichier encodé en latin1, vous constaterez que 'fileencoding' pour ce tampon est réglé sur latin1. Vous devrez donc définir manuellement le codage du fichier avant d'enregistrer le fichier.

:set fileencoding=utf8
:w myfilename

Notez également que les fichiers UTF8 commencent souvent par une marque d'ordre d'octet (BOM) qui indique l'endianness. La nomenclature est facultative mais certains programmes l'utilisent exclusivement pour déterminer le codage du fichier. Sous certaines conditions, Vim écrira la nomenclature, mais parfois non. Pour définir explicitement la nomenclature, procédez comme suit:

:set bomb

Pour plus d'informations :help mbyte-optionset :help utf8et :help bomb.

Eric Johnson
la source
Les instructions fonctionnent correctement, mais: 1) utf-8 n'a pas de finalité (comme l' explique l'aide de vim , la nomenclature utf-8 indique simplement que le fichier est utf-8); 2) Lorsque vous ouvrez à nouveau le fichier plus tard, vous devez avoir à set fileencoding=utf-8nouveau à l'avant. Vim ne remarque même pas la nomenclature si vous lui avez dit d'en écrire une (et il l'écrit effectivement). Pour faire fonctionner utf-8, vous en avez besoin ou set encoding=utf-8dans vos paramètres de démarrage. Au moins, c'est l'histoire de mon système.
Stein
35
:w ++enc=utf-8 %

pour écrire le fichier en encodage utf-8 sur le disque.

Michael Krelin - hacker
la source
5
Bien que cela soit correct, votre réponse n'aurait pas dû recueillir autant de votes positifs que celle d'Eric Johnson. La raison est que si vous ne définissez pas fileencoding, le :w ++enc=utf-8est valide une fois, mais la prochaine fois que vous exécutez :w, la valeur de 'fileencoding'sera utilisée, et si vous ne l'avez pas modifiée (explicitement lors de l'édition, ou en rechargeant le fichier, en espérant qui 'fencs'est réglé de manière appropriée et le codage réel est bien détectée), l'ancien encodage reviendra.
Benoit
1
@ MichaelKrelin-hacker, le changement fileencodingest également une réponse valable à la question, ce qui ne conduit pas l'OMI à prendre de mauvaises habitudes. Mais d'accord, c'est juste une question d'humeur, je suppose.
Benoit
3
@Benoit, je n'ai pas laissé entendre que la réponse d'Eric n'est pas valide! Si je trouve quelque chose d'étrange dans sa réponse, ce n'est pas le contenu, mais plutôt pourquoi a-t-il posté la question et la réponse à sa propre question en succession rapide :)
Michael Krelin - hacker
3
@Michael Krelin - hacker: consultez la FAQ. Il est en fait encouragé à répondre à votre propre question. C'est tout l'intérêt d'une page de questions-réponses comme celle-ci. Peu importe qui répond.
0xC0000022L
2
@ 0xC0000022L, la dernière fois que j'ai vérifié (je n'ai pas vérifié maintenant), il y avait quelque chose à propos de trouver une solution après avoir fait la recherche, pas de publier une question et une réponse dans une minute . Cela dit, je ne parlais que de ce qui est étrange dans sa réponse, pas de ce qui la rend invalide ou quelque chose du genre.
Michael Krelin - hacker