web-dev-qa-db-fra.com

Comment puis-je changer l'encodage d'un fichier avec vim?

J'ai l'habitude d'utiliser vim pour modifier les fins de ligne d'un fichier:

$ file file
file: ASCII text, with CRLF line terminators
$ vim file
:set ff=mac
:wq
$ file file
file: ASCII text, with CR line terminators

Est-il possible d'utiliser un processus similaire pour modifier le codage Unicode d'un fichier? J'essaie le suivant, qui ne fonctionne pas:

$ file file.xml
file.xml: Unicode text, UTF-16, little-endian
$ vim file
:set encoding=utf-8
:wq
$ file file.xml
file.xml: Unicode text, UTF-16, little-endian

J'ai vu quelqu'un dit qu'il pourrait "définir fileencoding = utf-8, puis mettre à jour et écrire le fichier, et cela fonctionnera", mais il me semble qu'il manque quelque chose, sinon il était confus. Je ne sais pas ce qu'il voulait dire par "alors mise à jour".

223
skiphoppy

De la doc :

: write ++ enc = utf-8 russian.txt

Vous devriez donc pouvoir modifier le codage dans le cadre de la commande write.

242
Brian Agnew

Notez qu'il y a une différence entre

codage défini

et

set fileencoding

Dans le premier cas, vous modifierez le codage de sortie affiché dans le terminal. Dans le second cas, vous modifierez le codage de sortie du fichier écrit.

156
Johan

Bien que l'utilisation de vim pour le faire soit parfaitement possible, pourquoi ne pas simplement utiliser iconv? Je veux dire - le chargement de l'éditeur de texte juste pour effectuer la conversion de codage semble utiliser trop gros marteau pour trop petit clou.

Juste:

iconv -f utf-16 -t utf-8 file.xml > file.utf8.xml

Et tu as fini.

77
user80168

Tout comme vos étapes, la configuration du codage de fichiers devrait fonctionner. Cependant, j'aimerais ajouter une "bombe fixe" pour aider l'éditeur à considérer le fichier comme UTF8.

$ vim file
:set bomb
:set fileencoding=utf-8
:wq
52
Francis

Il pourrait être utile de modifier encoding sur la ligne de commande avant la lecture du fichier:

_rem On Microsoft Windows
vim --cmd "set encoding=utf-8" file.ext
# In *nix Shell
vim --cmd 'set encoding=utf-8' file.ext
_

Voir en commençant , --cmd .

4
Hans Ginzel