Je viens de me faire renverser après la mise à jour de notre serveur de Debian 4 à 5. Nous sommes passés à l'environnement UTF-8 et nous avons maintenant des problèmes pour imprimer le texte correctement sur le navigateur, car tous les fichiers sont dans des encodages non-utf8 comme iso-8859-1, ascii, etc.Modification de l'encodage de fichier en utf-8 via vim dans un script
J'ai essayé beaucoup de scripts différents.
Le premier que j'ai essayé est "iconv". Celui-ci ne fonctionne pas, il change le contenu, mais les fichiers enconding est toujours non-utf8.
Même problème avec enca, encamv, convmv et d'autres outils installés via apt-get. Puis j'ai trouvé un code python, qui utilise chardet Universal Detector module, pour détecter l'encodage d'un fichier (qui fonctionne bien), mais en utilisant la classe unicode ou la classe codec pour l'enregistrer comme utf-8 ne fonctionne pas, sans des erreurs. Le seul moyen que j'ai trouvé pour obtenir le fichier et son contenu converti en UTF-8, est vi.
Ce sont les étapes que je fais pour un seul fichier:
vi filename.php
:set bomb
:set fileencoding=utf-8
:wq
Thats it. Celui-là fonctionne parfaitement. Mais comment peut-on l'exécuter via un script. Je voudrais écrire un script (shell Linux) qui parcourt un répertoire en prenant tous les fichiers php, puis en les convertissant en utilisant vi avec les commandes ci-dessus. Comme je dois commencer l'application vi, je ne sais pas comment faire quelque chose comme ceci:
"vi --run-command=':set bomb, :set fileencoding=utf-8' filename.php"
quelqu'un Hope peut me aider.
Je ne sais pas ce que cela signifie argdo, mais je l'ai essayé cela et il fonctionne: 'vim + "bombe set | mettre fileencoding = utf-8 | wq" $ (trouver -type f -name * .php.) ' – NovumCoder
Bien. argdo ne fait que répéter la commande pour chaque fichier dans la liste des arguments. –