Conversion de 400 fichiers codés en Iso-8859-1 vers Utf-8 [Résolu]

christianmusique 5 Messages postés lundi 17 avril 2006Date d'inscription 3 septembre 2013 Dernière intervention - 1 sept. 2013 à 23:20 - Dernière réponse : christianmusique 5 Messages postés lundi 17 avril 2006Date d'inscription 3 septembre 2013 Dernière intervention
- 3 sept. 2013 à 12:37
Bonjour,

J'ai un peu plus de 400 fichiers textes à convertir d'Iso-8859-1 ou de Mac Roman vers Utf-8.
Il y a en fait 3 problèmes à solutionner:
1. lire le fichier texte et reconnaitre le codage utilisé,
2. convertir le code lu en Utf-8
3. récrire le fichier texte avec file encoding=Utf8 et line endings=lf
Je rame sur ce problème et ne trouve pas sur le Web la solution toute faite (sans doute normal).
Je suis sur Mac OS X 10.6.8; j'ai un editeur de texte TextMate, un environnement Mamp; je sais un peu utiliser Automator et le Terminal Unix/Linux
Merci de m'ouvrir quelques pistes
Afficher la suite 

Votre réponse

4 réponses

denisbertin 172 Messages postés lundi 22 avril 2013Date d'inscription 25 juillet 2018 Dernière intervention - 3 sept. 2013 à 10:21
0
Merci
En définitive tous le monde devrais savoir programmer avec ceci comme préceptes et définition Le premier programme consiste à lire un fichier en entré effectuer des opérations puis écrire un fichier en sortie.

Dans votre cas c'est vraiment élémentaire, mais ceci étant je programme avec windows sur un ordinateur compatible IBM-PC et je pourrais pas vous fournir
un logiciel fonctionnant sur un Macintosh pour le faire mais si vous êtes intéressé, vous pouvez me contacter sur denisbeelog@gmail.com.
Commenter la réponse de denisbertin
denisbertin 172 Messages postés lundi 22 avril 2013Date d'inscription 25 juillet 2018 Dernière intervention - 3 sept. 2013 à 10:34
0
Merci
procedure trancodage(FileName,file_out:string);
var F,G: text;
ficelle:string;

begin
AssignFile(F, FileName); //Ouvir ce fichier
AssignFile(G, file_out); //Sortir ce ficher
Reset(F); //l'opération de lecture
Rewrite(G); //l'opération d'écriture
While not eof(F) do //Tant que le fin du fichier n'est pas obtenu
begin
Readln(F,ficelle);
//modifier la ficelle de lecture
Writeln(G,ficelle);
end;
CloseFile(G);
CloseFile(F);
end;
Commenter la réponse de denisbertin
christianmusique 5 Messages postés lundi 17 avril 2006Date d'inscription 3 septembre 2013 Dernière intervention - 3 sept. 2013 à 12:23
0
Merci
Merci pour votre réponse.
Finalement j'ai trouvé une solution en construisant un shell (péniblement car peu d'expérience du bash et du shell en général).
Ci-joint ce shell en bash

#!bin/bash
# conversion fichiers ISO-8859-1 en UTF-8
cd texte
for fichier in *
do
ls -1 "$fichier"
iconv -f ISO-8859-1 -t UTF-8 $fichier > "$fichier.utf"
rm $fichier
mv "$fichier.utf" $fichier
done
cd ..

Commenter la réponse de christianmusique
christianmusique 5 Messages postés lundi 17 avril 2006Date d'inscription 3 septembre 2013 Dernière intervention - 3 sept. 2013 à 12:37
0
Merci
Une solution avec un petit shell bash de nom ConvISO-UTF.bash

#!bin/bash
# conversion fichiers ISO-8859-1 en UTF-8
cd texte
for fichier in *
do
ls -1 "$fichier"
iconv -f ISO-8859-1 -t UTF-8 $fichier > "$fichier.utf"
rm $fichier
mv "$fichier.utf" $fichier
done
cd ..

Commentaires:

-le shell est rangé sur le répertoire au dessus du répertoire texte,
d'où le cd texte
-le répertoire texte contient les fichiers à convertir; en faire une copie de sécurité avant de lancer ce shell
-le ls -1 pour un seul nom de fichier par ligne
-le iconv fait le gros du boulot; il utilise l'entrée système et la sortie système, d'où le > "$fichier.utf"
-le rm supprime l'ancien fichier
-le mv renomme le fichier converti

Pour créer ce shell, utiliser le Terminal Mac et un éditeur de texte tel pico ou autre. Pour que le shell soit exécutable, taper chmod +x ConvISO-UTF.bash sur la ligne de commande du terminal
Pour exécuter ce shell taper bash ConvISO-UTF.bash sur la ligne de commande du terminal en étant positionné sur le répertoire qui contient ce shell.
Commenter la réponse de christianmusique

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.