Caractères accentués transformés en ▒
Bonjour,
le code suivant me permet de récupérer une liste de fichiers associés.
Code:
1 2 3 4 5 6 7 8
| mysql -u $mysql_user --password=$mysql_pass -e "select concat(SOU_FICHIER_SQL, '!', SOU_FICHIER_CSV) from sys_source;" -D mabdd -B -s 2> /dev/null \
| while read nom
do
ficSql=`echo $nom | cut -f1 -d!`
ficCsv=`echo $nom | cut -f2 -d!`
echo $ficSql - $ficCsv
/.../importFichier.sh "$ficSql" "$ficCsv"
done |
et importFichier.sh test l'existence du fichier ($FIC_CSV correspond au deuxième paramètre) :
Code:
1 2 3 4 5 6 7
| echo "Arguments CSV : " $2
if [ -e "$FIC_CSV" ] ; then
echo Le ficher $FIC_CSV existe
else
echo Le ficher $FIC_CSV n existe pas
exit 2
fi |
Le problème est que les fichiers contenant des caractères accentués ne sont pas trouvés. Un ls m'affiche bien les fichiers avec caractères accentués dans leur nom. importFichier.sh donne le résultat suivant :
Citation:
Arguments CSV : R▒gles Hopital Bris de Glace + sp▒cificit▒s.csv
Le ficher /.../R▒gles Hopital Bris de Glace + sp▒cificit▒s.csv n existe pas
J'ai donc essayé de supprimer les accents avec le script suivant :
Code:
1 2 3 4 5 6
| for i in /.../*.csv
do
echo "nom actuel : "$i
nouveau_nom=`echo "$i"|sed 'y/àâçéèêëîïôöùüûÀÇÉÈËÊÏÎÖÔÙÜÛ/aaceeeeiioouuuACEEEEIIOOUUU/'`
echo "nouveau_nom : "$nouveau_nom
done |
Cela donne :
Citation:
nom actuel : /.../Règles Hopital Bris de Glace + spécificités.csv
sed: -e expression n▒1, caract▒re 85: les cha▒nes destin▒es ▒ la commande `y' ont des longueurs diff▒rentes
nouveau_nom :
La même commande directement dans la console donne le même résultat :
Citation:
bash-3.2$ ls R*
Règles Hopital Bris de Glace + spécificités.csv
bash-3.2$ echo "Règles Hopital Bris de Glace + spécificités.csv"|sed y/àâçéèêëîïôöùüûÀÇÉÈËÊÏÎÖÔÙÜÛ/aaceeeeiioouuuACEEEEIIOOUUU
sed: -e expression n▒1, caract▒re 85: les cha▒nes destin▒es ▒ la commande `y' ont des longueurs diff▒rentes
-bash: echo: write error: Relais bris▒ (pipe)
Les deux chaînes "àâçéèêëîïôöùüûÀÇÉÈËÊÏÎÖÔÙÜÛ" et "aaceeeeiioouuuACEEEEIIOOUUU" ont pourtant la même longueur contrairement à ce qu'indique le message d'erreur.
Je soupçonne un paramétrage de Linux d'être la source de ce problème. Savez-vous ce qui ne va pas ?