Bonjour,

Je suis sur une Red Hat Enterprise Linux ES release 4.
Voici la problématique : je reçois des fichiers qui ont des jeux de caractères divers, et je dois les mettre en utf8 afin de les traiter correctement.

Actuellement j'utilise un petit shell du genre :

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
dos2unix $1
charset=`file -i $1| cut -d "=" -f 2`
echo "charset original:$charset"
if [ "$charset" == "iso-8859-1" ]
then
	echo "conversion UTF8"
	cp $1 $1.original
	cp $1 $1.tmp	
	iconv -f $charset -t UTF8 $1.tmp > $1
	retour=$?
	if [ "$retour" != "0" ]
	then
		echo "echec de la conversion"
		mv $1.original $1
	else
		echo "conversion OK"
		rm -f $1.original
	fi
else
	echo "Aucune conversion necessaire"
fi
 
#nettoyage 
rm -f $1.tmp
exit $retour
Et j'ai un problème avec un fichier que je viens de recevoir, pour lequel j'ai un retour de la commande file à unknown :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
[nicolas tmp]$ file -i fichier_pb
fichier_pb: text/plain; charset=unknown
Lorsque j'ouvre ce fichier avec textpad, il m'annonce un codepage ANSI.

D'où mes questions :
1°) Pourquoi le file -i n'est-il pas capable de déterminer ce codepage ?
2°) Est-ce que la solution que j'ai mise en place est pertinente ?
3°) Comment faire ?

Merci par avance pour votre aide.

Nicolas