53 votes

Fichier de modification de l'Encodage utf-8 via vim dans un script

je viens d'avoir renversé après notre serveur a été mis à jour depuis Debian 4 à 5. Nous sommes passés à l'environnement UTF-8 et maintenant, nous avons des problèmes pour obtenir le texte s'imprime correctement sur le navigateur, car tous les fichiers sont dans le non-utf8 encodages iso-8859-1, ascii, etc.

J'ai essayé beaucoup de différents scripts.

Le premier que j'ai essayé est "iconv". Que l'un ne marche pas, il change le contenu, mais les fichiers enconding est toujours non-utf8.

Même problème avec frca, encamv, convmv et quelques autres outils que j'ai installé via apt-get.

Ensuite, j'ai trouvé un code python qui utilise chardet Universelle module Détecteur pour détecter l'encodage d'un fichier (qui fonctionne très bien), mais l'utilisation de l'unicode classe ou le codec de classe pour les enregistrer en utf-8 ne marche pas, sans erreurs.

Le seul moyen que j'ai trouvé pour obtenir le fichier et son contenu converti en UTF-8, vi.

Ce sont les étapes que j'ai faites pour un seul fichier:

vi filename.php
:set bomb
:set fileencoding=utf-8
:wq

Thats it. Que l'on fonctionne parfaitement. Mais comment pouvez obtenir ce à l'aide d'un script. Je voudrais écrire un script (shell linux) qui parcourt un répertoire de prendre tous les fichiers php, puis de les convertir à l'aide de vi, avec les commandes ci-dessus. Comme j'ai besoin de lancer le vi de l'app, je ne sais pas comment faire quelque chose comme ceci:

"vi --run-command=':set bomb, :set fileencoding=utf-8' filename.php"

J'espère que quelqu'un pourra m'aider.

25voto

John Weldon Points 19132

C'est la façon la plus simple que je connaisse pour ce faire facilement à partir de la ligne de commande:

vim +"argdo se bomb | se fileencoding=utf-8 | w" $(find . -type f -name *.php)

Ou mieux encore si le nombre de fichiers devrait être assez grand:

find . -type f -name *.php | xargs vim +"argdo se bomb | se fileencoding=utf-8 | w"

16voto

Hans W Points 2530

Vous pouvez placer vos commandes dans un fichier, appelons - script.vim:

set bomb
set fileencoding=utf-8
wq

Ensuite, vous appelez Vim avec l' -S (source) option pour exécuter le script sur le fichier que vous souhaitez corriger. Pour ce faire sur un tas de fichiers que vous pourriez faire

find . -type f -name "*.php" -exec vim -S script.vim {} \;

Vous pouvez également mettre le Vim commandes sur la ligne de commande à l'aide de l' + option, mais je pense qu'il peut être plus lisible comme ça.

Note: je n'ai pas testé.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X