Je bascule fréquemment entre Ubuntu et Windows, ce qui pose des problèmes d’encodage avec les fichiers texte.
Si je sauvegarde un fichier texte dans Ubuntu, tout fonctionne correctement dans les deux systèmes. Mais Ubuntu ne découvre pas le codage des fichiers enregistrés avec Windows. Chaque fois que j'ouvre le "fichier Windows" dans l'éditeur de texte Ubuntu, je dois modifier les options de codage.
La solution change l'encodage de Windows-1250 à utf-8.
La question est donc de savoir comment ouvrir chaque fichier avec Windows-1250 et le sauvegarder avec utf-8, pour chaque fichier dans les sous-répertoires du répertoire courant (récursivement, je veux dire). Puis-je le faire dans le terminal ou j'ai besoin d'une application externe.
J'attends votre aide avec impatience.
Je préfère utiliser recode
pour cela. Il n'est pas installé par défaut, mais est disponible via le package du même nom. Il modifie également les fins de ligne CRLF en LF.
Sudo apt-get install recode
recode cp1250.. file.txt
Vous pouvez le faire pour tous les fichiers txt d'un répertoire entier
recode cp1250.. ./*.txt
Et récursivement en combinant avec find
find . -type f -name "*.txt" -exec recode cp1250.. {} +
L'option standard consiste à utiliser la commande iconv
, installée par défaut, mais cela ne modifie pas les fins de ligne. Vous devez donc le faire dans une autre étape:
iconv -f cp1250 < file.txt | sed $'s/\r$//' > newfile.txt
À long terme, je vous recommande de modifier le jeu de caractères par défaut de votre éditeur Windows et la fin de ligne en fin de ligne UTF-8 et UNIX (LF, \n
) pour éviter de devoir effectuer la conversion ultérieurement.
CR signifie retour chariot (\r
)
LF signifie saut de ligne (\n
)
Windows utilise les deux, mais les systèmes de type Unix n'utilisent que LF.
Sublime Text facilite l’enregistrement dans différents fichiers. Vous pouvez également rouvrir avec différents encodages et travailler avec plusieurs fichiers. Cochez réponse pour plus de détails.