avant d'essayer de faire un script pour décoder un fichier 'ansel' en
'ascii', je voulais savoir si ça existait déjà en perl un peux comme
quand on écrit :
Le Tue, 19 Jul 2005 17:10:00 +0000 (UTC), Nicolas George <nicolas$ a écrit :
avant d'essayer de faire un script pour décoder un fichier 'ansel' en
« ansel », connais pas.
Tu ne perds rien. Je ne l'ai trouvé que pour transmettre des données généalogiques au format Gedcom.
La conversion a cette tête là (je l'ai pompée sur ged2gen.pl un script disponible sur le ftp de Geneanet <ftp://ftp.geneanet.org>) :
$_[0] =~ s/áa/à/g; $_[0] =~ s/áe/è/g;
L'accent (ou title, ligature, cédille...) est codé par un caractère 8 bits avant la lettre.
C'est à ne plus utiliser et à remplacer par ISO-8859-1 voire UTF-8, mais on doit effectivement pouvoir le lire. -- Patrick Texier
Tous les résultats de GP F1 librement téléchargeables http://www.genindre.org/perso/f1.htm
Nicolas George
Patrick Texier wrote in message :
Tu ne perds rien. Je ne l'ai trouvé que pour transmettre des données généalogiques au format Gedcom.
Hum, dans ce cas, je doute que perl ait quoi que ce soit nativement pour faire ça.
Ceci dit, tel que tu le décris, aucune chance de convertir ça en ASCII. Je rappelle qu'ASCII, c'est espace!"#$%&'()*+,-./0123456789:;<=>?@ ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefghijklmnopqrstuvwxyz{|}~ et quelques codes de contrôle, et rien d'autre.
Patrick Texier wrote in message <dbk05l.3vvgflt.1@genindre.org>:
Tu ne perds rien. Je ne l'ai trouvé que pour transmettre des données
généalogiques au format Gedcom.
Hum, dans ce cas, je doute que perl ait quoi que ce soit nativement pour
faire ça.
Ceci dit, tel que tu le décris, aucune chance de convertir ça en ASCII. Je
rappelle qu'ASCII, c'est espace!"#$%&'()*+,-./0123456789:;<=>?@
ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefghijklmnopqrstuvwxyz{|}~ et quelques
codes de contrôle, et rien d'autre.
Tu ne perds rien. Je ne l'ai trouvé que pour transmettre des données généalogiques au format Gedcom.
Hum, dans ce cas, je doute que perl ait quoi que ce soit nativement pour faire ça.
Ceci dit, tel que tu le décris, aucune chance de convertir ça en ASCII. Je rappelle qu'ASCII, c'est espace!"#$%&'()*+,-./0123456789:;<=>?@ ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefghijklmnopqrstuvwxyz{|}~ et quelques codes de contrôle, et rien d'autre.
Patrick Texier
Le Tue, 19 Jul 2005 22:21:03 +0000 (UTC), Nicolas George <nicolas$ a écrit :
Tu ne perds rien. Je ne l'ai trouvé que pour transmettre des données généalogiques au format Gedcom.
Hum, dans ce cas, je doute que perl ait quoi que ce soit nativement pour faire ça.
Ceci dit, tel que tu le décris, aucune chance de convertir ça en ASCII.
Oui, c'est un abus de langage du questionneur.
ANSEL est un vieux encodage américain (1985) défini par l'ANSI pour des usages bibliographiques : American National Standard for Extended Latin Alphabet Codes Character Set for Bibliographic Use. Il porte la référence ANSI Z39.47-1985. Ni Perl, ni iconv le gèrent.
Le Tue, 19 Jul 2005 22:21:03 +0000 (UTC), Nicolas George
<nicolas$george@salle-s.org> a écrit :
Tu ne perds rien. Je ne l'ai trouvé que pour transmettre des données
généalogiques au format Gedcom.
Hum, dans ce cas, je doute que perl ait quoi que ce soit nativement pour
faire ça.
Ceci dit, tel que tu le décris, aucune chance de convertir ça en ASCII.
Oui, c'est un abus de langage du questionneur.
ANSEL est un vieux encodage américain (1985) défini par l'ANSI pour des
usages bibliographiques : American National Standard for Extended Latin
Alphabet Codes Character Set for Bibliographic Use. Il porte la
référence ANSI Z39.47-1985. Ni Perl, ni iconv le gèrent.
Le Tue, 19 Jul 2005 22:21:03 +0000 (UTC), Nicolas George <nicolas$ a écrit :
Tu ne perds rien. Je ne l'ai trouvé que pour transmettre des données généalogiques au format Gedcom.
Hum, dans ce cas, je doute que perl ait quoi que ce soit nativement pour faire ça.
Ceci dit, tel que tu le décris, aucune chance de convertir ça en ASCII.
Oui, c'est un abus de langage du questionneur.
ANSEL est un vieux encodage américain (1985) défini par l'ANSI pour des usages bibliographiques : American National Standard for Extended Latin Alphabet Codes Character Set for Bibliographic Use. Il porte la référence ANSI Z39.47-1985. Ni Perl, ni iconv le gèrent.
jl_morel
Dans l'article , a dit...
ANSEL est un vieux encodage américain (1985) défini par l'ANSI pour des usages bibliographiques : American National Standard for Extended Latin Alphabet Codes Character Set for Bibliographic Use. Il porte la référence ANSI Z39.47-1985. Ni Perl, ni iconv le gèrent.
Il existe malgré tout le module MARC (MAchine Readable Cataloging) qui permet de manipuler des données bibliographiques. Il gère apparemment ANSEL, voir :
Dans l'article <dbl1qb.3vvsrqd.1@genindre.org>, p.texier@alussinan.org a
dit...
ANSEL est un vieux encodage américain (1985) défini par l'ANSI pour des
usages bibliographiques : American National Standard for Extended Latin
Alphabet Codes Character Set for Bibliographic Use. Il porte la
référence ANSI Z39.47-1985. Ni Perl, ni iconv le gèrent.
Il existe malgré tout le module MARC (MAchine Readable Cataloging) qui
permet de manipuler des données bibliographiques.
Il gère apparemment ANSEL, voir :
ANSEL est un vieux encodage américain (1985) défini par l'ANSI pour des usages bibliographiques : American National Standard for Extended Latin Alphabet Codes Character Set for Bibliographic Use. Il porte la référence ANSI Z39.47-1985. Ni Perl, ni iconv le gèrent.
Il existe malgré tout le module MARC (MAchine Readable Cataloging) qui permet de manipuler des données bibliographiques. Il gère apparemment ANSEL, voir :
"Patrick Texier" a écrit dans le message de news: | Le Tue, 19 Jul 2005 17:10:00 +0000 (UTC), Nicolas George | | > > avant d'essayer de faire un script pour décoder un fichier 'ansel' en | > | > « ansel », connais pas. | | Tu ne perds rien. Je ne l'ai trouvé que pour transmettre des données | généalogiques au format Gedcom.
ben c'est exactement pour ça !!
| La conversion a cette tête là (je l'ai pompée sur ged2gen.pl un script | disponible sur le ftp de Geneanet <ftp://ftp.geneanet.org>) : | | $_[0] =~ s/áa/à/g; | $_[0] =~ s/áe/è/g; | | L'accent (ou title, ligature, cédille...) est codé par un caractère | 8 bits avant la lettre.
... un peu "courte" ta conversion :))) en fait les correspondances (1 à 1) sont :
je me demande donc si on peut faire un hash sur 2 caractères ?
merci
"Patrick Texier" <p.texier@alussinan.org> a écrit dans le message de
news: dbk05l.3vvgflt.1@genindre.org...
| Le Tue, 19 Jul 2005 17:10:00 +0000 (UTC), Nicolas George
|
| > > avant d'essayer de faire un script pour décoder un fichier
'ansel' en
| >
| > « ansel », connais pas.
|
| Tu ne perds rien. Je ne l'ai trouvé que pour transmettre des données
| généalogiques au format Gedcom.
ben c'est exactement pour ça !!
| La conversion a cette tête là (je l'ai pompée sur ged2gen.pl un
script
| disponible sur le ftp de Geneanet <ftp://ftp.geneanet.org>) :
|
| $_[0] =~ s/áa/à/g;
| $_[0] =~ s/áe/è/g;
|
| L'accent (ou title, ligature, cédille...) est codé par un caractère
| 8 bits avant la lettre.
... un peu "courte" ta conversion :)))
en fait les correspondances (1 à 1) sont :
"Patrick Texier" a écrit dans le message de news: | Le Tue, 19 Jul 2005 17:10:00 +0000 (UTC), Nicolas George | | > > avant d'essayer de faire un script pour décoder un fichier 'ansel' en | > | > « ansel », connais pas. | | Tu ne perds rien. Je ne l'ai trouvé que pour transmettre des données | généalogiques au format Gedcom.
ben c'est exactement pour ça !!
| La conversion a cette tête là (je l'ai pompée sur ged2gen.pl un script | disponible sur le ftp de Geneanet <ftp://ftp.geneanet.org>) : | | $_[0] =~ s/áa/à/g; | $_[0] =~ s/áe/è/g; | | L'accent (ou title, ligature, cédille...) est codé par un caractère | 8 bits avant la lettre.
... un peu "courte" ta conversion :))) en fait les correspondances (1 à 1) sont :
je me demande donc si on peut faire un hash sur 2 caractères ?
merci
Patrick Texier
Le 20 Jul 2005 07:17:37 GMT, (Jean-Louis MOREL) a écrit :
Il existe malgré tout le module MARC (MAchine Readable Cataloging) qui permet de manipuler des données bibliographiques. Il gère apparemment ANSEL, voir :
Merci. Il convertit effectivement ANSEL en UTF-8. Personellement je l'ai adopté pour faire un convertisseur.
Le 20 Jul 2005 07:17:37 GMT, jl_morel@bribes.org (Jean-Louis MOREL) a
écrit :
Il existe malgré tout le module MARC (MAchine Readable Cataloging) qui
permet de manipuler des données bibliographiques.
Il gère apparemment ANSEL, voir :
Le 20 Jul 2005 07:17:37 GMT, (Jean-Louis MOREL) a écrit :
Il existe malgré tout le module MARC (MAchine Readable Cataloging) qui permet de manipuler des données bibliographiques. Il gère apparemment ANSEL, voir :
Merci. Il convertit effectivement ANSEL en UTF-8. Personellement je l'ai adopté pour faire un convertisseur.
Paul Gaborit
À (at) Tue, 19 Jul 2005 22:51:32 +0200, Patrick Texier écrivait (wrote):
La conversion a cette tête là (je l'ai pompée sur ged2gen.pl un script disponible sur le ftp de Geneanet <ftp://ftp.geneanet.org>) :
$_[0] =~ s/áa/à/g; $_[0] =~ s/áe/è/g;
L'accent (ou title, ligature, cédille...) est codé par un caractère 8 bits avant la lettre.
Ce script est codé... heu... bizarrement. Bon, ceci étant, il a le mérite d'exister ! ;-)
Juste une remarque concernant la subroutine 'processaccents': l'utilisation successive de plusieurs 's/.../.../g' sur une même variable est toujours risquée car on peut produire accidentellement des suites de caractères qui seront ensuite recodées une deuxième fois... Par exemple, telle qu'est écrite cette subroutine, "âaa" sera recodé en "à" alors qu'on devrait obtenir "áa" !
Une "bonne" méthode consiste à créer une table de hachage de transformation et une regexp de reconnaissance générale :
my %ANSEL_to_LATIN1 = ( 'áa' => 'à', 'áe' => 'è', # ... # à compléter ! ); my $ansel_regex = join "|", keys sort %ANSEL_to_LATIN1;
Puis à faire toutes les substitutions en une seule passe :
(ce code simple ne fonctionne que si les clés utilisées dans %ANSEL_to_LATIN1 ne contiennent pas de caractères spéciaux pour les regexp ce qui sera le cas ici.)
-- Paul Gaborit - <http://perso.enstimac.fr/~gaborit/> Perl en français - <http://perl.enstimac.fr/>
À (at) Tue, 19 Jul 2005 22:51:32 +0200,
Patrick Texier <p.texier@alussinan.org> écrivait (wrote):
La conversion a cette tête là (je l'ai pompée sur ged2gen.pl un script
disponible sur le ftp de Geneanet <ftp://ftp.geneanet.org>) :
$_[0] =~ s/áa/à/g;
$_[0] =~ s/áe/è/g;
L'accent (ou title, ligature, cédille...) est codé par un caractère
8 bits avant la lettre.
Ce script est codé... heu... bizarrement. Bon, ceci étant, il a le
mérite d'exister ! ;-)
Juste une remarque concernant la subroutine 'processaccents':
l'utilisation successive de plusieurs 's/.../.../g' sur une même
variable est toujours risquée car on peut produire accidentellement
des suites de caractères qui seront ensuite recodées une deuxième
fois... Par exemple, telle qu'est écrite cette subroutine, "âaa" sera
recodé en "à" alors qu'on devrait obtenir "áa" !
Une "bonne" méthode consiste à créer une table de hachage de
transformation et une regexp de reconnaissance générale :
my %ANSEL_to_LATIN1 =
(
'áa' => 'à',
'áe' => 'è',
# ...
# à compléter !
);
my $ansel_regex = join "|", keys sort %ANSEL_to_LATIN1;
Puis à faire toutes les substitutions en une seule passe :
(ce code simple ne fonctionne que si les clés utilisées dans
%ANSEL_to_LATIN1 ne contiennent pas de caractères spéciaux pour les
regexp ce qui sera le cas ici.)
--
Paul Gaborit - <http://perso.enstimac.fr/~gaborit/>
Perl en français - <http://perl.enstimac.fr/>
À (at) Tue, 19 Jul 2005 22:51:32 +0200, Patrick Texier écrivait (wrote):
La conversion a cette tête là (je l'ai pompée sur ged2gen.pl un script disponible sur le ftp de Geneanet <ftp://ftp.geneanet.org>) :
$_[0] =~ s/áa/à/g; $_[0] =~ s/áe/è/g;
L'accent (ou title, ligature, cédille...) est codé par un caractère 8 bits avant la lettre.
Ce script est codé... heu... bizarrement. Bon, ceci étant, il a le mérite d'exister ! ;-)
Juste une remarque concernant la subroutine 'processaccents': l'utilisation successive de plusieurs 's/.../.../g' sur une même variable est toujours risquée car on peut produire accidentellement des suites de caractères qui seront ensuite recodées une deuxième fois... Par exemple, telle qu'est écrite cette subroutine, "âaa" sera recodé en "à" alors qu'on devrait obtenir "áa" !
Une "bonne" méthode consiste à créer une table de hachage de transformation et une regexp de reconnaissance générale :
my %ANSEL_to_LATIN1 = ( 'áa' => 'à', 'áe' => 'è', # ... # à compléter ! ); my $ansel_regex = join "|", keys sort %ANSEL_to_LATIN1;
Puis à faire toutes les substitutions en une seule passe :
(ce code simple ne fonctionne que si les clés utilisées dans %ANSEL_to_LATIN1 ne contiennent pas de caractères spéciaux pour les regexp ce qui sera le cas ici.)
-- Paul Gaborit - <http://perso.enstimac.fr/~gaborit/> Perl en français - <http://perl.enstimac.fr/>
Michel Rodriguez
Paul Gaborit wrote:
Une "bonne" méthode consiste à créer une table de hachage de transformation et une regexp de reconnaissance générale :
my %ANSEL_to_LATIN1 = ( 'áa' => 'à', 'áe' => 'è', # ... # à compléter ! ); my $ansel_regex = join "|", keys sort %ANSEL_to_LATIN1;
Puis à faire toutes les substitutions en une seule passe :
(ce code simple ne fonctionne que si les clés utilisées dans %ANSEL_to_LATIN1 ne contiennent pas de caractères spéciaux pour les regexp ce qui sera le cas ici.)
Pour etre complet, si les cles contiennent des caracteres speciaux, un simple Q E les de-specialisera:
(ce code simple ne fonctionne que si les clés utilisées dans
%ANSEL_to_LATIN1 ne contiennent pas de caractères spéciaux pour les
regexp ce qui sera le cas ici.)
Pour etre complet, si les cles contiennent des caracteres speciaux, un
simple Q E les de-specialisera:
(ce code simple ne fonctionne que si les clés utilisées dans %ANSEL_to_LATIN1 ne contiennent pas de caractères spéciaux pour les regexp ce qui sera le cas ici.)
Pour etre complet, si les cles contiennent des caracteres speciaux, un simple Q E les de-specialisera:
"Michel Rodriguez" a écrit dans le message de news: 42df55cd$0$333$ | Paul Gaborit wrote: | > | > Une "bonne" méthode consiste à créer une table de hachage de | > transformation et une regexp de reconnaissance générale : | > | > my %ANSEL_to_LATIN1 | > ( | > 'áa' => 'à', | > 'áe' => 'è', | > # ... | > # à compléter ! | > ); | > my $ansel_regex = join "|", keys sort %ANSEL_to_LATIN1; | > | > Puis à faire toutes les substitutions en une seule passe : | > | > $_[0] =~ s/($ansel_regex)/$ANSEL_to_LATIN1{$1}/ge; | > | > (ce code simple ne fonctionne que si les clés utilisées dans | > %ANSEL_to_LATIN1 ne contiennent pas de caractères spéciaux pour les | > regexp ce qui sera le cas ici.) | > | | Pour etre complet, si les cles contiennent des caracteres speciaux, un | simple Q E les de-specialisera: | | $_[0] =~ s/(Q$ansel_regexE)/$ANSEL_to_LATIN1{$1}/ge; | | -- | mirod
donc avec un truc du genre : ------------------------------------------------------------------------------ my $srcfile = "toto.txt"; my $dstfile = "tata.txt"; my $line;
my %ANSEL_to_LATIN1 = ( 'áa' => 'à', ... ); my $ansel_regex = join "|", keys sort %ANSEL_to_LATIN1;
------------------------------------------------------------------------------ ca devrait le faire non ?
merci beaucoup de votre aide
"Michel Rodriguez" <mirod@mirod.org> a écrit dans le message de news:
42df55cd$0$333$5fc30a8@news.tiscali.it...
| Paul Gaborit wrote:
| >
| > Une "bonne" méthode consiste à créer une table de hachage de
| > transformation et une regexp de reconnaissance générale :
| >
| > my %ANSEL_to_LATIN1 | > (
| > 'áa' => 'à',
| > 'áe' => 'è',
| > # ...
| > # à compléter !
| > );
| > my $ansel_regex = join "|", keys sort %ANSEL_to_LATIN1;
| >
| > Puis à faire toutes les substitutions en une seule passe :
| >
| > $_[0] =~ s/($ansel_regex)/$ANSEL_to_LATIN1{$1}/ge;
| >
| > (ce code simple ne fonctionne que si les clés utilisées dans
| > %ANSEL_to_LATIN1 ne contiennent pas de caractères spéciaux pour
les
| > regexp ce qui sera le cas ici.)
| >
|
| Pour etre complet, si les cles contiennent des caracteres speciaux,
un
| simple Q E les de-specialisera:
|
| $_[0] =~ s/(Q$ansel_regexE)/$ANSEL_to_LATIN1{$1}/ge;
|
| --
| mirod
donc avec un truc du genre :
------------------------------------------------------------------------------
my $srcfile = "toto.txt";
my $dstfile = "tata.txt";
my $line;
my %ANSEL_to_LATIN1 = (
'áa' => 'à',
...
);
my $ansel_regex = join "|", keys sort %ANSEL_to_LATIN1;
"Michel Rodriguez" a écrit dans le message de news: 42df55cd$0$333$ | Paul Gaborit wrote: | > | > Une "bonne" méthode consiste à créer une table de hachage de | > transformation et une regexp de reconnaissance générale : | > | > my %ANSEL_to_LATIN1 | > ( | > 'áa' => 'à', | > 'áe' => 'è', | > # ... | > # à compléter ! | > ); | > my $ansel_regex = join "|", keys sort %ANSEL_to_LATIN1; | > | > Puis à faire toutes les substitutions en une seule passe : | > | > $_[0] =~ s/($ansel_regex)/$ANSEL_to_LATIN1{$1}/ge; | > | > (ce code simple ne fonctionne que si les clés utilisées dans | > %ANSEL_to_LATIN1 ne contiennent pas de caractères spéciaux pour les | > regexp ce qui sera le cas ici.) | > | | Pour etre complet, si les cles contiennent des caracteres speciaux, un | simple Q E les de-specialisera: | | $_[0] =~ s/(Q$ansel_regexE)/$ANSEL_to_LATIN1{$1}/ge; | | -- | mirod
donc avec un truc du genre : ------------------------------------------------------------------------------ my $srcfile = "toto.txt"; my $dstfile = "tata.txt"; my $line;
my %ANSEL_to_LATIN1 = ( 'áa' => 'à', ... ); my $ansel_regex = join "|", keys sort %ANSEL_to_LATIN1;