Posté par JJD .
En réponse au message (sed)(bash).
Évalué à 4.
Salut,
Il y a certainement plusieurs remarques à faire concernant ton script.
Tout d'abord, chaque commande sed prend ton fichier d'entrée ($file) pour convertir un caractère unique et écrire le résultat dans $file.tmp : chaque exécution de sed vient donc écraser le fichier $file.tmp précédemment écrit. Seule la dernière exécution est donc utile (autrement dit, seule la ligne
"sed 's/Ãa/ê/g' < $file > $file.tmp"
sert à quelque chose.
Ensuite, il faut bien savoir quelle est la locale courante en cours lorsque tu écris/visualises le script en question.
Quoi qu'il en soit, la meilleure solution pour ce type de conversion est, comme écrit dans les deux commentaires précédents, d'utiliser iconv.
Mais attention, comme tu veux apparemment convertir de l'utf8 en latin9, la bonne commande est celle de B.franck (la commande de LiNuCe fait la conversion inverse).
Je te conseille tout de même de prendre comme codage de destination du latin9 (LATIN-9 ou ISO-8859-15) plutôt que du latin1 (ou ISO-8859-1).
Evidemment, iconv ne fonctionnera que si ton fichier d'entrée est bien en UTF8. S'il y a à l'intérieur un mélange de caractère UTF8 et latin9, le résultat de la conversion avec iconv ne sera pas terrible...
# Conversion UTF8 vers iso8859-15
Posté par JJD . En réponse au message (sed)(bash). Évalué à 4.
Il y a certainement plusieurs remarques à faire concernant ton script.
Tout d'abord, chaque commande sed prend ton fichier d'entrée ($file) pour convertir un caractère unique et écrire le résultat dans $file.tmp : chaque exécution de sed vient donc écraser le fichier $file.tmp précédemment écrit. Seule la dernière exécution est donc utile (autrement dit, seule la ligne
"sed 's/Ãa/ê/g' < $file > $file.tmp"
sert à quelque chose.
Ensuite, il faut bien savoir quelle est la locale courante en cours lorsque tu écris/visualises le script en question.
Quoi qu'il en soit, la meilleure solution pour ce type de conversion est, comme écrit dans les deux commentaires précédents, d'utiliser iconv.
Mais attention, comme tu veux apparemment convertir de l'utf8 en latin9, la bonne commande est celle de B.franck (la commande de LiNuCe fait la conversion inverse).
Je te conseille tout de même de prendre comme codage de destination du latin9 (LATIN-9 ou ISO-8859-15) plutôt que du latin1 (ou ISO-8859-1).
Evidemment, iconv ne fonctionnera que si ton fichier d'entrée est bien en UTF8. S'il y a à l'intérieur un mélange de caractère UTF8 et latin9, le résultat de la conversion avec iconv ne sera pas terrible...
A+
JJD