Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

convertir en utf-8 en masse

36 réponses
Avatar
Rakotomandimby (R12y) Mihamina
Bonjour,
J'ai une quantité conséquente de fichiers CSV (et divers autres) encodés
en iso-8859-1 qui viennent d'une parc d'ordinateur qui est maintenant
hors d'usage.
Les ordinateurs actuels sont en utf-8. Je souhaite passer une moulinette
iso-8859-1 -> utf-8 en masse à tous ces fichiers.
Laquelle me conseillez-vous?
J'ai un peu cherché avec:
http://www.google.fr/search?q=iso-8859-1+to+utf-8
mais n'ai rien trouvé.
--
Serveurs infogérés:
http://www.infogerance.us/infogerance/packs-serveurs-infogeres

10 réponses

1 2 3 4
Avatar
JKB
Le 17-10-2008, ? propos de
convertir en utf-8 en masse,
Rakotomandimby (R12y) Mihamina ?crivait dans fr.comp.os.unix :
Bonjour,
J'ai une quantité conséquente de fichiers CSV (et divers autres) encodés
en iso-8859-1 qui viennent d'une parc d'ordinateur qui est maintenant
hors d'usage.
Les ordinateurs actuels sont en utf-8. Je souhaite passer une moulinette
iso-8859-1 -> utf-8 en masse à tous ces fichiers.
Laquelle me conseillez-vous?
J'ai un peu cherché avec:
http://www.google.fr/search?q=iso-8859-1+to+utf-8



Un script avec iconv ? Un truc du genre
for i in $(ls); do iconv ...; done ?

Attention, il y a des basheries dedans ;-)

JKB

--
Le cerveau, c'est un véritable scandale écologique. Il représente 2% de notre
masse corporelle, mais disperse à lui seul 25% de l'énergie que nous
consommons tous les jours.
Avatar
Paul Gaborit
À (at) Fri, 17 Oct 2008 21:09:40 +0300,
"Rakotomandimby (R12y) Mihamina" écrivait (wrote):
Bonjour,
J'ai une quantité conséquente de fichiers CSV (et divers autres)
encodés en iso-8859-1 qui viennent d'une parc d'ordinateur qui est
maintenant hors d'usage.
Les ordinateurs actuels sont en utf-8. Je souhaite passer une
moulinette iso-8859-1 -> utf-8 en masse à tous ces fichiers.
Laquelle me conseillez-vous?
J'ai un peu cherché avec:
http://www.google.fr/search?q=iso-8859-1+to+utf-8
mais n'ai rien trouvé.



recode latin1..utf8 *

--
Paul Gaborit - <http://perso.enstimac.fr/~gaborit/&gt;
Avatar
Nicolas George
JKB wrote in message :
for i in $(ls); do iconv ...; done ?

Attention, il y a des basheries dedans ;-)



$(ls), c'est pas une basherie, c'est une ânerie. ls n'est pas fait pour
bâtir des scripts. for i in * marchera infiniment mieux.
Avatar
JKB
Le 17-10-2008, ? propos de
Re: convertir en utf-8 en masse,
Nicolas George ?crivait dans fr.comp.os.unix :
JKB wrote in message :
for i in $(ls); do iconv ...; done ?

Attention, il y a des basheries dedans ;-)



$(ls), c'est pas une basherie, c'est une ânerie. ls n'est pas fait pour
bâtir des scripts. for i in * marchera infiniment mieux.



J'aimerais savoir en quoi c'est une ânerie (j'ai toujours aimé tes
remarques à l'emporte-pièce) et pourquoi le for i in * fonctionnera
infiniment mieux (attention, sur certains Unix, il y a un piège).

Je t'écoute.

JKB

--
Le cerveau, c'est un véritable scandale écologique. Il représente 2% de notre
masse corporelle, mais disperse à lui seul 25% de l'énergie que nous
consommons tous les jours.
Avatar
Nicolas George
JKB wrote in message :
J'aimerais savoir en quoi c'est une ânerie



1. ls est très souvent aliasé, ce qui peut rendre inutilisable sa sortie
pour un script.

2. ls formate son affichage, en particulier pour les caractères spéciaux et
en fonction de la locale, ce qui rend sa sortie inutilisable en toute
généralité.

3. Le fait de reparser la sortie d'une commande perd l'information de la
limite des noms de fichiers.

Ce que je dis là, c'est la base de la base de l'écriture de scripts shells
Unix. Si tu ne le savais pas déjà, c'est inquiétant.
Avatar
JKB
Le 18-10-2008, ? propos de
Re: convertir en utf-8 en masse,
Nicolas George ?crivait dans fr.comp.os.unix :
JKB wrote in message :
J'aimerais savoir en quoi c'est une ânerie



1. ls est très souvent aliasé, ce qui peut rendre inutilisable sa sortie
pour un script.



ls n'est pas fait pour les chiens. ls -1 non plus. Lorsque j'écris
un script, j'ai toujours un unalias -a au début. Pourquoi ? Parce
que j'ai déjà vu des trucs rigolo avec des commandes de base ayant
été 'aliassisées' de façon totalement baroque.

2. ls formate son affichage, en particulier pour les caractères spéciaux et
en fonction de la locale, ce qui rend sa sortie inutilisable en toute
généralité.



Tous les scripts shell commencent par une déclaration de locale, et
tant qu'on y est, C (parce que là encore...). Si tu ne fais pas ça,
tu risques fort d'aller dans le mur très vite parce que le nombre de
commandes ayant une sortie localisée est assez grand.

3. Le fait de reparser la sortie d'une commande perd l'information de la
limite des noms de fichiers.



Non, parce qu'il y a des caractères 'n'. Si vraiment tu as peur de
ça, tu colles un coup de awk et on n'en parle plus.

Ce que je dis là, c'est la base de la base de l'écriture de scripts shells
Unix. Si tu ne le savais pas déjà, c'est inquiétant.



Sauf que tu n'as pas répondu à ma question. Il y a une différence
fondamentale entre for i in $(ls) [ou for i in $(ls -1)] et for i in *.
La deuxième forme risque de merdoyer bien plus vite sur certains Unix,
mais c'est toi qui voit.

<EOT>

JKB

--
Le cerveau, c'est un véritable scandale écologique. Il représente 2% de notre
masse corporelle, mais disperse à lui seul 25% de l'énergie que nous
consommons tous les jours.
Avatar
Nicolas George
JKB wrote in message :
ls n'est pas fait pour les chiens. ls -1 non plus.



Ce n'est pas ce que tu as écrit.

Tous les scripts shell commencent par une déclaration de locale,



Ce n'est pas ce que tu as écrit.

et
tant qu'on y est, C (parce que là encore...).



Et ça aussi, ça risque de casser des choses.

Non, parce qu'il y a des caractères 'n'.



Qui ne sont pas traités différemment d'un simple caractère espace par ce que
tu as écrit.

Sauf que tu n'as pas répondu à ma question.



Si.

<EOT>



Bonne idée.
Avatar
JKB
Le 18-10-2008, ? propos de
Re: convertir en utf-8 en masse,
Nicolas George ?crivait dans fr.comp.os.unix :
JKB wrote in message :
ls n'est pas fait pour les chiens. ls -1 non plus.



Ce n'est pas ce que tu as écrit.



Où as-tu vu que j'ai écrit un script complet ? As-tu vu un truc qui
commençait par #!/bin/bash ?

Tous les scripts shell commencent par une déclaration de locale,



Ce n'est pas ce que tu as écrit.



Forcément, je n'ai pas écrit un _script_, j'ai suggéré une commande.

tant qu'on y est, C (parce que là encore...).



Et ça aussi, ça risque de casser des choses.



Mouarf. Dans ce cas, tu n'écris plus rien. La locale la plus
portable est C.

Non, parce qu'il y a des caractères 'n'.



Qui ne sont pas traités différemment d'un simple caractère espace par ce que
tu as écrit.



Hein ?

cauchy:[~/rpl/rpl-4.0.0.prerelease.9/src/test] > for i in $(ls); do echo
$i; done
fichier 1
fichier 2
cauchy:[~/rpl/rpl-4.0.0.prerelease.9/src/test] >

Maintenant, ce n'est peut-être pas portable et je dois te dire que
je m'en contrefiche, je n'utilise ça que pour des moulinettes qui ne
servent qu'une fois et je ne mets _jamais_ d'espaces dans les noms
de fichiers. De toute façon, lorsque je ne maîtrise pas les noms de
fichiers ou que je veux faire une truc évolué, je me tape du awk,
c'est bien plus efficace.

cauchy:[~/rpl/rpl-4.0.0.prerelease.9/src/test] > ls -1 | awk '{ print; }'
fichier 1
fichier 2
cauchy:[~/rpl/rpl-4.0.0.prerelease.9/src/test] >

Sauf que tu n'as pas répondu à ma question.



Si.



Non, le monsieur t'a demandé la différence entre 'for i in *' et
'for i in $(ls -1)' indépendamment des problèmes d'espace. Je t'aide,
il y a une différence d'expansion et de longueur de ligne (enfin
pour un shell correctement fichu). J'ai des tas d'exemples où la
première forme explose et pas la seconde.

<EOT>



Bonne idée.



<EOT> définitif. Je sais de toute façon que tu répondra à ce
message, tu ne peux t'en empêcher et tu veux toujours non seulement
avoir raison, mais encore avoir le dernier mot.

--
Le cerveau, c'est un véritable scandale écologique. Il représente 2% de notre
masse corporelle, mais disperse à lui seul 25% de l'énergie que nous
consommons tous les jours.
Avatar
Cyrille Lefevre
JKB a écrit :
Le 17-10-2008, ? propos de
Re: convertir en utf-8 en masse,
Nicolas George ?crivait dans fr.comp.os.unix :
JKB wrote in message :
for i in $(ls); do iconv ...; done ?

Attention, il y a des basheries dedans ;-)


$(ls), c'est pas une basherie, c'est une ânerie. ls n'est pas fait p our
bâtir des scripts. for i in * marchera infiniment mieux.



J'aimerais savoir en quoi c'est une ânerie (j'ai toujours aimé tes
remarques à l'emporte-pièce) et pourquoi le for i in * fonctionner a
infiniment mieux (attention, sur certains Unix, il y a un piège).



Bonjour,

si des fichiers ont des espaces, for i in $(ls) ne marchera pas comme
attendu.

pour ce qui est de l'*, s'il n'y a pas de fichiers, tu auras très
certainement *: not found qui peut être contourné de la façon suiva nte :

for i in *; do [ "$i" = "*" ] && break; ... "$i"; done

Cordialement,

Cyrille Lefevre.
--
mailto:Cyrille.Lefevre-news%
supprimer "%nospam% et ".invalid" pour me repondre.
Avatar
Cyrille Lefevre
JKB a écrit :
Le 18-10-2008, ? propos de
Re: convertir en utf-8 en masse,
Nicolas George ?crivait dans fr.comp.os.unix :
JKB wrote in message :
J'aimerais savoir en quoi c'est une ânerie


1. ls est très souvent aliasé, ce qui peut rendre inutilisab le sa sortie
pour un script.



ls n'est pas fait pour les chiens. ls -1 non plus. Lorsque j'écr is



ls -1 n'est pas nécessaire dans les script, il est implicite.

un script, j'ai toujours un unalias -a au début. Pourquoi ? Parce



mauvaise habitude, sutout en korn shell si tu utilise integer, autoload,
etc.

que j'ai déjà vu des trucs rigolo avec des commandes de base ayant
été 'aliassisées' de façon totalement baroque.


[snip]
Ce que je dis là, c'est la base de la base de l'écriture de scripts shells
Unix. Si tu ne le savais pas déjà, c'est inquiétant.



Sauf que tu n'as pas répondu à ma question. Il y a une diffà ©rence
fondamentale entre for i in $(ls) [ou for i in $(ls -1)] et for i in *.
La deuxième forme risque de merdoyer bien plus vite sur certains Unix,
mais c'est toi qui voit.



de prime abord, je dirais que c'est plutôt la 1ère forme qui po sera plus
de pb que la 2nde.

Cordialement,

Cyrille Lefevre.
--
mailto:Cyrille.Lefevre-news%
supprimer "%nospam% et ".invalid" pour me repondre.
1 2 3 4