Bonjour,
J'ai un projet assez conséquent à convertir en UTF-8. Je suis sur Mac.
Le projet initial est encodé est ISO-8859-1, toutefois, certains fichiers sont en US-ASCII par exemple.
J'ai trouvé un script bash assez intéressant sur le net, utilisant iconv pour la conversion, mais je voudrais le personnaliser pour qu'il prenne en compte automatiquement l'encodage initial de chaque fichier.
Le script initial :
Ce script est une bonne base, mais le principal inconvénient est que l'encodage initial doit obligatoirement être définit dans le script (FROM_CHARSET="ISO-8859-1").
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34 #/bin/bash # # iconv-inplace.sh # Does recursive charset conversion using iconv # # Copyright (c) 2009 Onlime Webhosting, Philip Iezzi # http://www.onlime.ch ###### Configuration ###### FROM_CHARSET="ISO-8859-1" TO_CHARSET="UTF-8" ########################### # Validate args STARTDIR="$1" if [ -z "$STARTDIR" ] then echo "Usage: $0 <directory>" echo "where: <directory> is the directory to start the recursive UTF-8 conversion." exit 1 fi LIST=`find $1 -name "*.php"` for i in $LIST; do file -I $i; read -p "Convert $i (y/n)? " if [ "$REPLY" == "y" ] then iconv --from-code=$FROM_CHARSET --to-code=$TO_CHARSET $i > $i."utf8"; mv $i."utf8" $i; fi echo ""; done
Je souhaiterais savoir comment "détecter" automatiquement l'encodage du fichier initial, j'ai fait ça, mais ça ne marche pas :
En gros, à chaque itération je souhaite récupérer dans la variable CONVERT_TO l'encodage du fichier initial.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 LIST=`find $1 -name "*.php"` for i in $LIST; do file -I $i; CONVERT_TO = `file --mime-encoding $i` read -p "Convert $i to $CONVERT_TO (y/n)? " if [ "$REPLY" == "y" ] then iconv --from-code=$FROM_CHARSET --to-code=$CONVERT_TO $i > $i."utf8"; mv $i."utf8" $i; fi echo ""; done
Ainsi, dans la commande iconv, je remplace la variable "FROM_CHARSET" par "CONVERT_TO"...
Seulement voilà, j'ai une erreur à l'éxecution du script :
Quelqu'un pourrait m'aider à ce sujet? j'imagine que la solution est assez simple mais vu que je suis débutant en BASH, j'ai du mal à trouver...
Code : Sélectionner tout - Visualiser dans une fenêtre à part CONVER_TO: command not found
Merci d'avance
Simon
Partager